我處於這種情況,我有一個名爲Elements
的表。現在我創建一個名爲Divergences
的表,它將基本上存儲Elements
對。 Divergence
的目的是檢查兩個Elements
是否有分歧的答案。實體框架將兩個表列映射到相同的相關表鍵
Element Divergence
--------- ----------
ElementId ElementId1
ElementId2
在上述表模式,ElementId1
和是外鍵在Elements
表映射到ElementId
和形成用於Divergence
表複合主鍵。
我使用數據庫第一種方法其中我在SQL Server Management Studio中創建表,之後我在實體框架設計器中執行Update Model from Database...
。
我面臨的問題是,當EF設計師生成模型時,它會在Element
類中創建2組ICollection<Element>
,即Elements
和Elements1
。
這不會給我一個Divergences
DbSet。
我想有什麼是Divergence
類,我會做這樣的事情代碼:
Divergence d = new Divergence();
d.Element1 = element1;
d.Element2 = element2;
Database.Divergences.Add(d);
Database.SaveChanges();
,稍後:
Element e = Database.Elements.Single(e => e.ElementId == 7);
var divergences = e.Divergences;
我嘗試添加一個新列到Divergence
表如下:
Element Divergence
--------- ------------
ElementId DivergenceId
ElementId1
ElementId2
這正確地l在實體框架設計器中關聯到1 <-> *
關係。我終於得到了一個Divergences
DbSet,但DivergenceId
屬性在代碼中沒用,我仍然在Element
類中獲得2組屬性。需要注意的是,ElementId1
和仍然構成複合主鍵。
您認爲映射這種特定情況的正確方法是什麼?感謝您的意見。
真棒Slauma!就是這樣......我將以這種方式實現它,因爲如你所說,沒有內置的功能來映射我想要的方式。非常感謝您的關注! :) –