Sử dụng EF 5 (mã được thiết kế ngược trước), mô hình của tôi hoạt động tốt cho đến khi nó dừng đột ngột."EntityType không có khóa được xác định" ngoại lệ mặc dù khóa được xác định bằng HasKey
\ tSystem.Data.Entity.Edm.EdmEntityType:: EntityType 'ProjectsDate' không có khóa nào được xác định. Xác định khóa cho EntityType này.
\ tSystem.Data.Entity.Edm.EdmEntityType:: EntityType 'ProjectsRisk' không có khóa được xác định. Xác định khóa cho EntityType này.
Tôi xác định khóa sử dụng API thông thạo hơn là thuộc tính, dưới đây là các lớp ProjectsDates của tôi.
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);
}
}
Tại sao không EF thấy bản đồ API thông thạo của tôi?
Có lẽ bạn không thêm một thể hiện của 'ProjectsDateMap' cho' modelBuilder.Configurations' trong 'OnModelCreating'? – Slauma
Chỉ cần kiểm tra lại, đó là trong OnModelCreating, cổ vũ anyway – Malkin
Thật đáng tiếc, nó đã được một lời giải thích đơn giản và sửa chữa :) Bạn đã kiểm tra trong trình gỡ rối nếu dòng 'HasKey' thực sự được thông qua? – Slauma