我正在努力解決一個非常乏味的問題。 我有一個名爲國家級和國家稱爲類多重約束違反SQL Server 2008 - CodeFirst
public class Nation
{
public int ID {get; set;}
public int name {get;set;}
public List<NationAlly> NationAllies {get;set;}
}
public class NationAlly
{
public int ID {get; set;}
public int level {get;set;}
public Nation toNation {get;set;}
}
我使用EF 4 CodeFirst用的DbContext叫NationsDB來管理我的數據庫SQL Server 2008的 。如果我創建類型的新對象我嘗試撥打countriesDB.SaveChanges,我得到以下例外:
「違反多重性約束'關係'CodeFirstNamespace.NationAlly_toNation'的角色'NationAlly_toNation_Target'具有多重性1或0..1。」
我試圖用NationAllies字段爲空來保存Nation,並且這個異常不會拋出,數據庫中的Nation表會得到所有正確的值。
在我的數據庫表國家有2個字段:ID(主鍵),名稱 表全國有3個字段:ID(主鍵),水平,NationID 的兩個表具有關係,其中全國相連。 NationID是外鍵,Nation.ID是主鍵。
並不奇怪?在我看來,NationAlly應該有一個名爲NationID1的字段,另一個名爲NationID2來創建一個國家和其他國家的「關係」。
我做錯了什麼?
'NationAlly'應該代表一個多對多的關係嗎?即一個國家有許多盟友,也可以是許多國家的盟友? – 2011-03-24 17:34:47
一個國家當然有很多NationAllies,因爲在國內有一個NationAlly實體的名單。一個單一的國家實體擁有一個且僅有的一個國家,即「所有者」國家(擁有NationAlly名單的國家)以及一個且僅有的一個國家,這是該國際關係所關注的「國家」。 – Francesco 2011-03-24 18:44:32
什麼時候你會得到異常?你寫到你「創建一個新類型的民族對象」,調用SaveChanges並拋出異常。下面兩段你寫道:「我試圖用NationAllies字段保存一個國家空字段,這個異常不會拋出。」區別在哪裏?你在第一個案例中添加NationAllies? – Slauma 2011-03-24 19:17:39