问题描述
|
考虑以下示例模型:
人有0..1用户
用户有1个人
尝试1:
我在模型设计器上将关联从ѭ0拖动到
User
。
我已固定基数以满足我的需要(默认值为1xN)
我从模型生成了DDL
问题:
输出User
表具有Person_id
列,没有唯一约束。也就是说,它不是1x1关系,因为许多用户可以引用同一个人。这里一定有问题
尝试2:
在模型设计器上拖拉了从“人”到“用户”的关联。
修复了可满足我需求的基数(默认为1xN)
选择关联并单击属性窗口上的Referential Constraint
按钮以编辑关联
选定人员为委托人,用户为依存类型
选择Principal Key
为Id和ѭ6also也为Id(我读过某个地方,我应该对两种类型使用相同的键)
问题:
我运行以下代码:
using (var context = new Locadora())
{
User user = new User ();
user.PasswordHash = \"hash\";
user.Pessoa = new Person();
user.Pessoa.Nome = \"André\";
context.Usuários.AddObject(user);
context.SaveChanges();
}
SaveChanges触发此异常:
ReferentialConstraint中的从属属性映射到商店生成的列。列:\'Id \'
所以我现在选择不了了。我不知道如何在实体框架中实现1x1或1x0..1关系。
我怎么做?
解决方法
第一次尝试无法进行,因为当前EF版本根本不支持唯一键。第二种方法不起作用,因为您的从属实体不能具有自动生成的键=
StoreGeneratedPattern
必须设置为None
。