我正在努力解决一个非常乏味的问题。 我有一个名为国家级和国家称为类多重约束违反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