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

cit*_*nas 54 c# asp.net entity-framework-4

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

我创建了两个实体:
替代文字

我想在Product - > Group之间添加1到nc的关系.如果我首先创建了MSSQL数据库,我会在表产品中添加一个列IDGroup,并将Product.IDGroup引用到Group.IDGroup.据我所知,如果我向产品实体添加一个名为IDGroup的新属性,我无法在设计器中添加此类关联

这是我添加映射的方式: 替代文字

结果如下:
替代文字

现在这个问题的部分是:如果我将现有MSSQL数据库中的两个表添加到edmx文件中,我将收到编译错误:

Error 3027: No mapping specified for the following EntitySet/AssociationSet - GroupSet, ProductSet
Run Code Online (Sandbox Code Playgroud)

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

Error 2062: No mapping specified for instances of the EntitySet and AssociationSet in the EntityContainer myContainer.
Run Code Online (Sandbox Code Playgroud)

有些东西告诉我,我这样做是错的,这只是基本的东西.我该怎么办?

Jas*_*ett 85

我自己也遇到了这个问题,当我用谷歌搜索它时(我点击了你的问题).

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

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

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

  • 我双击了链接并设置了引用约束 - 但错误仍然存​​在.重新启动VS 2010并再次设置参照约束就可以了. (4认同)
  • 很好的答案.我很惊讶地看到我需要关闭并重新打开VS才能使其工作,即使在正确完成其他任何事情之后也是如此.实体框架很棒,除非它不是! (4认同)
  • 谢谢!我正在浏览属性和映射,并以不同的方式创建链接,但无论我做了什么,我都无法让错误消失.我从没想过双击链接. (2认同)

小智 9

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

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


Ste*_*ies 6

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

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

然后编译代码,我能够使用var foreign = DBContext.Primary.First()来跨实体工作.外部等

史蒂夫