我是新來的實體框架,當我創建一些示例項目時,我得到以下錯誤。實體框架模型映射表上的第一個錯誤
「實體類型'StudentSubject'未映射。」
以下是表格圖。
的問題是,它不產生持有很多的記錄,以學生和主題表的許多映射StudentSubject的映射。
但是,如果我引入一個新的列作爲Id到表StudentSubject並使其成爲主鍵並刪除複合主鍵然後它的工作。我想知道爲什麼會發生這種情況,而且我所採取的方式是採用模式第一種方法做到這一點。
我是新來的實體框架,當我創建一些示例項目時,我得到以下錯誤。實體框架模型映射表上的第一個錯誤
「實體類型'StudentSubject'未映射。」
以下是表格圖。
的問題是,它不產生持有很多的記錄,以學生和主題表的許多映射StudentSubject的映射。
但是,如果我引入一個新的列作爲Id到表StudentSubject並使其成爲主鍵並刪除複合主鍵然後它的工作。我想知道爲什麼會發生這種情況,而且我所採取的方式是採用模式第一種方法做到這一點。
我看不到你的代碼,但這是我通常如何映射它。請注意,這不需要流利的API映射
public class Student
{
public int Id { get; set; }
public string FirstName {get; set; }
public string LastName {get; set; }
public virtual ICollection<StudentSubject> StudentSubjects { get; set; }
}
public class Subject
{
public int Id { get; set; }
public string Name {get; set; }
public virtual ICollection<StudentSubject> StudentSubjects { get; set; }
}
public class StudentSubject
{
[Key]
[Column(Order = 1)]
public int StudentId { get; set; }
[Key]
[Column(Order = 2)]
public int SubjectId{ get; set; }
public virtual Student Student { get; set; }
public virtual Subject Subject { get; set; }
}
我建議使用流暢的api進行映射,因爲命名約定有時不適合請求。
以下代碼應該按照您的需要工作;
protected override void OnModelCreating
(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Student>()
.HasMany(t => t.Subject)
.WithMany(t => t.Student)
.Map(m =>
{
m.ToTable("StudentSubjects");
m.MapLeftKey("StudentId");
m.MapRightKey("InstructorID");
});
}
我以前有過類似的問題,但它與命名有關。該框架與單數/複數混淆的該死的東西。不要認爲這是同一個問題嗎? – melancia