Utilizzando EF 5 (codice retroingegnerizzato per primo), il mio modello funzionava correttamente finché non si è fermato improvvisamente."EntityType non ha un'eccezione definita chiave" sebbene la chiave sia definita con HasKey
\ tSystem.Data.Entity.EdmEntityType:: EntityType 'ProjectsDate' non ha alcuna chiave definita. Definire la chiave per questo EntityType.
\ tSystem.Data.Entity.Edm.EdmEntityType:: EntityType 'ProjectsRisk' non ha alcuna chiave definita. Definire la chiave per questo EntityType.
Definisco una chiave utilizzando API fluente anziché attributi, ecco le mie classi di 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);
}
}
Perché EF non vedere il mio mappatura API fluente?
Forse non aggiungere un'istanza di 'ProjectsDateMap' a' modelBuilder.Configurations' in 'OnModelCreating'? – Slauma
Appena ricontrollato, è in OnModelCreating, applausi comunque – Malkin
Che peccato, era stata una spiegazione e una correzione così semplici :) Avete controllato nel debugger se la linea 'HasKey' è effettivamente passata? – Slauma