2010-09-13 94 views
53

对于新项目,我试着先创建自己的业务类,然后再创建真正的数据库表。因此我使用的是Entity Framework 4 Designer。创建了一个新的“ADO.Net实体数据模型”文件,扩展名为.edmx。如何在Entity Framework 4 Entitydesigner中的两个对象之间正确设置关联?

我创建了两个实体:
alt text

我想补充的产品之间有1到NC关系 - >集团。如果我首先创建了MSSQL数据库,那么我会将一个列IDGroup添加到Table Product并将引用的Product.IDGroup添加到Group.IDGroup。据我所看到的,我不能在设计中添加这样的协会,如果我加入一个名为IDGroup新属性的产品实体

这是我如何添加映射: alt text

导致:
alt text

现在是什么这个问题是关于部分:如果我从一个现有的MSSQL数据库的EDMX文件中添加两个表,我会得到编译错误:

Error 3027: No mapping specified for the following EntitySet/AssociationSet - GroupSet, ProductSet 

这个错误是什么意思,我该怎么做才能解决这个问题? 如果我删除这两个表,我会收到一个警告,而不是:

Error 2062: No mapping specified for instances of the EntitySet and AssociationSet in the EntityContainer myContainer. 

东西告诉我,我这样做是完全错误的,这仅仅是基本的东西。我该怎么做对不对?

+1

+1感谢您提出这个问题,我经常忘记这么做。 – 2011-08-03 16:36:05

回答

85

我刚碰到这个我自己&当我谷歌搜索它(我打你的问题)。

我能够在设计器中双击线(关联线)。填写在那里的属性,我得到它的工作。

我也不得不关闭VS和重新打开它得到一些报道走开错误的...

不能说这是正确的答案 - 只是摸索周围,并似乎取得结果。

+2

谢谢!我正在浏览Properties and Mapping,并以不同的方式创建链接,但无论我做了什么,我都无法让错误消失。我从来没有想过要双击链接。 – Rachel 2011-05-12 19:47:24

+4

我双击链接并设置参考约束 - 但错误依然存在。重新启动VS 2010并再次设置参考约束也有诀窍。 – Jesslyn 2012-06-29 12:42:43

+4

很好的答案。我很惊讶地看到,我需要关闭并重新打开VS才能使其正常工作,即使在正确执行其他所有操作之后也是如此。 实体框架非常棒,除非它不是! – 2013-04-12 14:59:00

3

我有同样的错误,并且“添加关联”对话框没有帮助我设置的一位配置是“参照约束”属性。一旦我配置了我重建的解决方案,一切都很酷。

6

当我使用安装了EF4.1的VS2010 SP1下的ADO.Net DBContext生成器从数据库生成模型时,出现此错误。我使用的数据库在主键字段和外键字段之间没有任何参照完整性。

解决的办法是双击会出现参考对话框对话框的关联线。然后,我将Principal字段设置为包含主键的表,具有外键的Dependent作为表,将外键名设置为在下拉列表中匹配并单击确定。

然后编译代码,我可以在使用 var foreign = DBContext.Primary.First()的实体上工作。外交部等

史蒂夫

9

东西可能很容易错过是从模型生成数据库。根据我的理解,在对数据库.edmx所做的每一项更改之后都必须执行此操作。

这种简单的错误发生在我身上,并导致挫折几分钟=)

0

我有这个错误,当我已经删除从模型图的关联,但关联仍然在底层的XML .edmx。他们只是我发现解决的方法是手动编辑edmx以删除对违规关联的引用。

0

您只需要从edmx文件中删除所有表格。现在右键单击edmx文件并选择更新表单数据库选项。更新Ef,问题将得到解决。

0

我正在使用数据库第一种方法,并遇到同样的问题。

什么是导致问题是我的同事从数据库中删除了一个表,忘记了更新模型。

我的解决方案从图中找到已删除的实体。 (模型浏览器可能很有用。) 然后从图中删除它,因为如果您从数据库中删除表,EF不会删除实体。

生成并检查错误列表窗口(Ctrl + E,W)。

完成。

0

我还发现,在对实体框架上下文和模型进行更改后,重建项目有时可以解决这些错误,特别是如果实体框架上下文位于不同的项目中。

相关问题