2015-03-25 51 views
0

我希望有人能給我一些建議。我想知道,如果我在軌道上或離開基地,我的方法。我正在使用實體框架,數據庫第一種方法。我有一個鏈接表,將人們彼此聯繫起來。例如,與Person 2關聯的Person 1作爲朋友。 (ASSOCIATION_TYPE保持相關聯的查找表中的鍵的值)Microsoft Entity Framework鏈接表問題

enter image description here

我注意到,實體框架創建兩個單獨的導航屬性。

[EdmRelationshipNavigationPropertyAttribute("IntelDBModel", "FK_a_Person_Person_t_Person", "a_Person_Person")] 
    public EntityCollection<a_Person_Person> a_Person_Person 
[EdmRelationshipNavigationPropertyAttribute("IntelDBModel", "FK_a_Person_Person_t_Person1", "a_Person_Person")] 
    public EntityCollection<a_Person_Person> a_Person_Person1 

在應用程序的其他部分,我已成功使用實體框架將數據寫入數據庫。例如,我有一個人打電話關係。

enter image description here

在來電話場景中的人時,我創建t_Person(p)的對象,則創建一個t_Telephone(t)的對象,並使用p.t_Telephone.Add(T);

這似乎工作正常。

我在如何管理這個人對人鏈接表插入方面有點失落。

保存到數據庫時,我使用foreach遍歷People對象。

foreach (t_Person p in People) 
{ctx.t_Person.AddObject(p); 
... 
} 

我知道什麼人與此People對象集合中的人相關聯。但是,我不知道如何利用t_Person導航屬性(a_Person_Person)將person1和person2值保存到鏈接表(a_Person_Person)。

任何提示將不勝感激。

+0

這個問題無關,與ASP.NET – Dai 2015-03-25 00:10:21

+0

這就是爲什麼我停止使用實體框架,複雜的解決方案,回來的T-SQL和存儲過程,,,, – ymz 2015-03-25 00:16:13

回答

0

我認爲使用EF當給定的情況下通常會爲你很難,因爲你是連接兩個外鍵兩個一頁與相同的主鍵的表,因爲關係或延遲加載就難以處理,你可能會得到雙重記錄或錯誤的記錄,我將另一個屬性添加到像dateCreated會這將使該EF治療t_person表不具有關聯關係的t_person表,但實際的實體讓您對實體和插入和刪除更多的控制。