我正在使用EF 4.1 CTP5和SQL Server 2008.我需要了解如何解決重複性問題。我有以下2類:併發性問題實體框架
public class Nation
{
public int ID {get; set;}
public string name {get;set;}
public List<NationAlly> NationAllies {get;set;}
}
public class NationAlly
{
public int ID {get; set;}
public int level {get;set;}
public Nation Owner {get; set;}
public Nation toNation {get;set;}
}
的實體映射到兩個表(國家和NationAllies)數據庫。此外,還有兩種關係。 1)從NationAllies.OwnerID到Nation.ID 2)從NationAllies.ToNationID到Nation.ID
當我嘗試從我的數據庫檢索國家類型的對象,我訪問的DbContext類NationDB:
Nation selectedNation = ((nationDB.Nations.Include("NationAllies")).Where(m => m.name == "France")).FirstOrDefault();
問題是我得到一個具有NationAllies列表的selectedNation對象,但列表中的每個NationAlly都具有toNation = null的字段。 首先,我希望字段toNation從數據庫中檢索正確的信息。我該怎麼做呢?
當然,國家將與其他國家聯盟相連,而聯盟其他國家也將擁有其他國家。怎麼可能建立一個遞歸圖?我的想法是通過以特定方式查詢數據庫來導航地圖直到某個級別。這樣做,有什麼最好的方法來獲得良好的速度表現?
你如何映射這些實體。首先,您的代碼不會與您的查詢進行覈對,因爲'Nation'中的'name'是整數。另外默認的映射會把'toNation'指向你的情況下的父實體法國。不會有遞歸。 – 2011-03-26 14:18:35
1)更正了Nation.name中的錯誤類型2)增加了關於映射的描述 – Francesco 2011-03-26 15:47:31
@Ladislav:您有遞歸意義,即每個國家都可以有幾個NationAlly(s)。每個國家在國家領域都有一個國家,而這個國家又可以有幾個國家。在這種情況下,將創建整個層次結構組織或地圖。地圖的邊界當然是有限的(最後是沒有產生新分支的「葉子」,即沒有盟友的國家)或無限(國家都彼此相互關聯) – Francesco 2011-03-26 16:08:55