2010-11-02 34 views
4
映射片段

我有以下型号:问题在EF4

alt text

但是,当我用VS2010编译,我得到以下错误:

错误2错误3007:问题在映射片段从第1784行开始,2018年:[由[创建]]的列正被映射到两个片段中以适应不同的概念侧属性。

我想要什么?其实我想要注释实体具有FK到用户实体。 何时出现错误?当我添加FK用户注意我有错误。如果我删除链接,没有问题。 问题是什么? 感谢 约翰

回答

1

我的猜测是,在用户实体的关联已经在用户名定义,用户名是一个候选键(上定义的唯一索引)在SQL Server中。虽然你可以在此基础上建立在SQL Server中创建关系,EF的当前版本确实支持创建关联基于候选键:In EF (3.5 and 4.0) FKs MUST point to Primary Keys.

做这个工作的唯一方法是创建一个里面台新的int字段(如用户ID),然后创建User.Id(PK)和Note.UserID(FK)和EF之间的新关系将愉快地创建基于你一个协会。

+0

哪里?在设计师?以及更精确的?谢谢。 – user96547 2010-11-02 17:45:23

+0

我更新了更具体的答案。请检查一下。 – 2010-11-02 18:33:29

+0

对不起,有一些不清楚的...如果我这样做:这将从我的“createdby”当前字段改变吗? – user96547 2010-11-02 19:28:45

2

我也有一个“用户”实体(基于视图)和几个表与CreatedByUser和ModifiedByUser引用。

这对我的作品没有得到“必须为空”的错误:

  • 在“注意”实体:右键单击“添加>协会...”。
  • 选择“用户”作为右侧的“终端实体”。
  • 交换多重性:“Notes”应该是“Many”,“User”应该是“One”。
  • 我取消选择右侧导航属性,因为我永远不会从“用户”导航到其他表格:但这取决于您。
  • 如果你有两个“CreatedBy”和“ModifiedBy”属性,那么你可能要更改协会名称为更有意义(如变“NoteUser”到“NoteCreatedByUser”
  • 同上的导航属性(如改变“用户”到“CreatedByUser”)
  • 离开“添加外键的属性......”未
  • 单击确定
  • 重要:。在“属性”窗口,进入到参照约束,然后单击省略号
  • 选择“用户”作为委托人
  • 将相关属性更改为适当的值(例如, “CreatedBy”)
  • 单击确定。

完成!

从我的项目下面的屏幕截图。

enter image description here