Przy użyciu EF 5 (najpierw kod poddany odwrotnej kolejności), mój model działał dobrze, dopóki nie nagle się zatrzymał."EntityType nie ma zdefiniowanego klucza" wyjątek, chociaż klucz jest zdefiniowany hasKey
\ tSystem.Data.Entity.Edm.EdmEntityType :: EntityType "ProjectsDate" nie ma zdefiniowanego klucza. Zdefiniuj klucz dla tego EntityType.
\ tSystem.Data.Entity.Edm.EdmEntityType :: EntityType "ProjectsRisk" nie ma zdefiniowanego klucza. Zdefiniuj klucz dla tego EntityType.
Definiuję klucz używając płynnego API zamiast atrybutów, tutaj są moje klasy ProjectsDates.
public partial class ProjectsDate { public string OSProjectCode { get; set; } public Nullable<System.DateTime> TargetStart { get; set; } public Nullable<System.DateTime> EndDateOriginal { get; set; } public Nullable<System.DateTime> EndDateChangeControl { get; set; } public Nullable<System.DateTime> EndDateActual { get; set; } public Nullable<System.DateTime> GoLiveAgreed { get; set; } public Nullable<System.DateTime> GoLiveActual { get; set; } public virtual Project Project { get; set; } }
public class ProjectsDateMap : EntityTypeConfiguration<ProjectsDate>
{
public ProjectsDateMap()
{
// Primary Key
this.HasKey(t => t.OSProjectCode);
// Properties
this.Property(t => t.OSProjectCode)
.IsRequired()
.HasMaxLength(10);
// Table & Column Mappings
this.ToTable("ProjectsDates");
this.Property(t => t.OSProjectCode).HasColumnName("OSProjectCode");
this.Property(t => t.TargetStart).HasColumnName("TargetStart");
this.Property(t => t.EndDateOriginal).HasColumnName("EndDateOriginal");
this.Property(t => t.EndDateChangeControl).HasColumnName("EndDateChangeControl");
this.Property(t => t.EndDateActual).HasColumnName("EndDateActual");
this.Property(t => t.GoLiveAgreed).HasColumnName("GoLiveAgreed");
this.Property(t => t.GoLiveActual).HasColumnName("GoLiveActual");
// Relationships
this.HasRequired(t => t.Project)
.WithOptional(t => t.ProjectsDate);
}
}
Dlaczego nie EF zobaczyć moją biegle mapowanie API?
Może nie dodać instancję 'ProjectsDateMap' do' modelBuilder.Configurations' w 'OnModelCreating'? – Slauma
Po prostu podwójnie sprawdzone, jest w OnModelCreating, okrzyki i tak – Malkin
Jaka szkoda, było to takie proste wyjaśnienie i naprawa :) Czy sprawdziłeś w debugerze, czy linia 'HasKey' faktycznie została przekazana? – Slauma