Unter Verwendung von EF 5 (rückentwickelter Code zuerst) funktionierte mein Modell einwandfrei, bis es plötzlich aufhörte.Ausnahme "EntityType hat keinen Schlüssel definiert" obwohl Schlüssel mit HasKey definiert wurde
\ tSystem.Data.Entity.Edm.EdmEntityType:: EntityType 'ProjectsDate' hat keinen Schlüssel definiert. Definieren Sie den Schlüssel für diesen EntityType.
\ tSystem.Data.Entity.Edm.EdmEntityType:: EntityType 'ProjectsRisk' hat keinen Schlüssel definiert. Definieren Sie den Schlüssel für diesen EntityType.
Ich definiere einen Schlüssel mit fließenden API anstelle von Attributen, hier ist meine ProjectsDates-Klassen.
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);
}
}
Warum fließend API-Mapping nicht EF sehen?
Vielleicht haben Sie nicht eine Instanz von 'ProjectsDateMap' zu' modelBuilder.Configurations' in 'OnModelCreating' hinzufügen? – Slauma
Nur doppelt überprüft, es ist in OnModelCreating, Prost sowieso – Malkin
Was für eine Schande, es war so eine einfache Erklärung und zu beheben :) Haben Sie den Debugger eingecheckt, wenn die HasKey-Zeile tatsächlich übergeben wird? – Slauma