对于一个新项目,我首先尝试创建业务类,然后再创建真正的数据库表。因此我正在使用Entity Framework 4 Designer。 A创建了一个新的“ADO.Net实体数据模型”文件,扩展名为.edmx。
我创建了两个实体:
我想在Product - >之间添加1到nc的关系。组。如果我首先创建了MSSQL数据库,我会在表产品中添加一个列IDGroup,并将Product.IDGroup引用到Group.IDGroup。据我所见,如果我向产品实体添加名为IDGroup的新属性,我无法在设计器中添加此类关联
这是我添加映射的方式:
导致:
现在问题的部分是:如果我将现有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.
某事告诉我,我这样做是错的,这只是基本的东西。我该怎么办呢?
答案 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)
我还发现,在更改实体框架上下文和模型后重建项目有时可以解决这些错误,尤其是在实体框架上下文位于不同项目中时。