Using EF 5 (reverse engineering code first), my model worked fine until it suddenly stopped.
\ tSystem.Data.Entity.Edm.EdmEntityType :: EntityType 'ProjectsDate' does not have a key. Define a key for this EntityType.
\ tSystem.Data.Entity.Edm.EdmEntityType :: EntityType 'ProjectsRisk' does not have a specific key. Define a key for this EntityType.
I define the key using a free API, not attributes, here are my ProjectsDates classes.
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); } }
Why doesn't EF see my current API mapping?
source share