我目前有一個EF上下文。在我的數據庫模式中,我有以下情況。實體框架 - 外鍵映射 - 模型綁定
兩個表,表A表B和
表被定義如下:
TableA (A_ID, name, description)
TableB (B_ID, C_ID, name, description)
表A表B和之間的關係是這樣的,B_ID和C_ID都FK對A_ID。
如何通過設置我的ModelBinder(Fluent API)或註釋來實現EF中的這種行爲。提前致謝。
我目前有一個EF上下文。在我的數據庫模式中,我有以下情況。實體框架 - 外鍵映射 - 模型綁定
兩個表,表A表B和
表被定義如下:
TableA (A_ID, name, description)
TableB (B_ID, C_ID, name, description)
表A表B和之間的關係是這樣的,B_ID和C_ID都FK對A_ID。
如何通過設置我的ModelBinder(Fluent API)或註釋來實現EF中的這種行爲。提前致謝。
我有解決方案,但前提是您只需在TableB實體中添加TableA虛擬道具來修改您的實體。 例子:
public class TableB
{
...
public virtual TableA B { get; set; }
public virtual TableA C { get; set; }
...
}
然後覆蓋在上下文中 「OnModelCreating」(你可以使用 「HasOptional」,而不是 「HasRequired」):
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<TableB>()
.HasRequired(x => x.B)
.WithMany()
.HasForeignKey(x => x.B_ID).WillCascadeOnDelete(false);
modelBuilder.Entity<TableB>()
.HasRequired(x => x.C)
.WithMany()
.HasForeignKey(x => x.C_ID).WillCascadeOnDelete(false);
base.OnModelCreating(modelBuilder);
}
還有一件事。我不知道如何使用我的解決方案爲您的「B_ID」主鍵。在我的項目中,我有一個不同的PK「Id」。
謝謝。這種方法對我來說效果很好。 – nav 2014-08-29 22:36:18
我沒有使用Int's,而是使用了GUID作爲我的PK。如果這仍然是你認爲的問題? – nav 2014-08-28 07:30:07
GUIDs也應該工作:) – Marthijn 2014-08-28 07:52:56