0
我創建了下面的實體。EntityFramework代碼中的一對一關係 - 設置關係的Columnames
[Table("User")]
public class User
{
[...]
[Key]
public String ID { get; set; }
[Column("CreatedBy")]
public virtual User CreatedBy { get; set; }
}
與:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>().HasRequired(a => a.CreatedBy)
.WithRequiredPrincipal();
}
當表被創建CreatedBy的columname是 「USER_ID」 雖然我使用的列屬性。 Columname應該是「CreatedBy」。
我改變上面的代碼行
modelBuilder.Entity<User>().HasRequired(a => a.CreatedBy)
.WithRequiredPrincipal().Map(e => e.MapKey("CreatedBy"))
並在PAKAGE管理器加入附加遷移新的遷移。在更新數據庫中,我收到消息:'DALDbContext.Users'中的實體參與'User_CreatedBy'關係。找到0個相關的'User_CreatedBy_Source'。預計會有'User_CreatedBy_Source'。
我的表格是空的。有人知道這個解決方法嗎?
謝謝!這個解決方案爲我工作。後來我添加了一個更多的屬性,同樣也有一個名爲ParentUser的相同關係。這次基礎屬性解決方案沒有奏效。我得到了異常「無法確定類型之間關聯的主要結束」。我添加了「modelBuilder.Entity().Property(p => p.ParentUserId).HasColumnName(」ParentUser「); modelBuilder.Entity ().HasOptional(x => x.ParentUser).WithMany()。HasForeignKey (x => x.ParentUserId);「 所以這次我不得不混合屬性和流利的api的解決方案。 –
Briefkasten