如何使用Model-First方法在EF4中创建1x0..1关联?

时间:2011-04-14 19:49:32

标签: .net entity-framework entity-framework-4

考虑以下示例模型:

  • 有0..1用户
  • 用户有1人

尝试1:

  • 我在模特设计师身上拖了PersonUser的关联。
  • 我修正了基数以满足我的需求(默认为1xN)
  • 我从模型
  • 生成了DDL

问题:

  • 输出User表有一个Person_id列,没有唯一约束。也就是说,它不是1x1关系,因为许多用户可以引用同一个人。这里肯定有问题

尝试2:

  • 在模型设计器上将关联从“人员”拖动到“用户”。
  • 修正了基数以满足我的需求(默认值为1xN)
  • 选择关联并单击属性窗口中的Referential Constraint按钮以编辑关联
  • 作为委托人的选定人和作为依赖类型的用户
  • 选择Principal Key为Id,Dependent Property也是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关系。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

第一次尝试无法正常工作,因为当前的EF版本根本不支持Unique键。第二种方法不起作用,因为您的依赖实体不能具有自动生成的密钥= StoreGeneratedPattern必须设置为None