如何在Entity Framework 4 Entitydesigner中正确设置两个对象之间的关联?

时间:2010-09-13 13:04:54

标签: c# asp.net entity-framework-4

对于一个新项目,我首先尝试创建业务类,然后再创建真正的数据库表。因此我正在使用Entity Framework 4 Designer。 A创建了一个新的“ADO.Net实体数据模型”文件,扩展名为.edmx。

我创建了两个实体:
alt text

我想在Product - >之间添加1到nc的关系。组。如果我首先创建了MSSQL数据库,我会在表产品中添加一个列IDGroup,并将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.
某事告诉我,我这样做是错的,这只是基本的东西。我该怎么办呢?

8 个答案:

答案 0 :(得分:85)

我自己也遇到了这个问题。当我用Google搜索它时(我点击了你的问题)。

我能够双击设计器中的线(关联线)。填写那里的房产,我就搞定了。

我还必须关闭VS并重新打开它以获得报告的一些错误消失......

不能说这是正确的答案 - 只是摸索并似乎得到了结果。

答案 1 :(得分:9)

可能容易遗漏的是从模型生成数据库。根据我的理解,必须在对数据库.edmx进行每次更改后运行。

这个简单的错误发生在我身上并导致沮丧几分钟=)

答案 2 :(得分:6)

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

解决方案是双击显示Referential Contstrainst对话框的关联线。然后我将Principal字段设置为具有主键的表,Dependent作为具有外键的表,在下拉列表中设置要匹配的外键名称,然后单击OK。

然后编译代码,我能够使用各种实体 var foreign = DBContext.Primary.First()。Foreign etc.

史蒂夫

答案 3 :(得分:3)

我遇到了同样的错误,“Add Association”对话框没有帮我设置的一点配置是“Referential Constraint”属性。一旦我配置了我重建解决方案,一切都很酷。

答案 4 :(得分:0)

当我从模型图中删除了一个关联但是关联仍然存在于.edmx中的基础XML中时,我遇到了这个错误。他们发现修复的唯一方法是手动编辑edmx以删除对违规关联的引用。

答案 5 :(得分:0)

您只需从edmx文件中删除所有表即可。现在右键单击edmx文件并选择update form database选项。更新Ef,问题将得到解决。

答案 6 :(得分:0)

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

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

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

构建,并选中错误列表窗口(Ctrl + E,W)。

完成。

答案 7 :(得分:0)

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

相关问题