我开始项目,设计了实体并生成了数据库。一切都很顺利。
然后我需要返回并向我的模型添加另一个实体。但是,当我将实体拖到EDMX时,会出现以下错误:
好的!我只需要将Entity1映射到一个表中..但是!我正在使用模型优先方法,我希望在生成DDL时它为我创建表。
我该如何解决这个错误?
好的!我只需要将Entity1映射到一个表中..但是!我正在使用模型优先方法,我希望在生成DDL时它为我创建表。
我该如何解决这个错误?
另一个有趣的事实是,这不是会阻止编译的类型的错误。它确实会生成输出类库。难道它不应该是一个警告之类的吗?未指定以下EntitySet/AssociationSet的映射-(EntityName)
我发现我一直犯同样的错误,因为在创建两个实体之间的关联后,我忘记了创建引用约束。
错误3027:未为以下实体集/关联集指定映射... - Entity Framework头痛
如果你正在使用实体框架开发模型,那么有时可能会遇到这个令人烦恼的错误:
错误3027:未为以下实体集/关联集[实体或关联名称]指定映射
当EDM看起来没有问题时,这可能毫无意义,但这个错误通常与EDM无关。它应该说的是“重新生成你的数据库文件”。
你知道,Entities在构建过程中会检查SSDL和MSL,因此如果你刚刚更改了EDM但没有使用生成数据库模型...,它会抱怨你的sql脚本中缺少一些东西。
因此,简而言之,解决方案是: “每次更新你的EDM后,如果你正在进行模型优先开发,请不要忘记生成数据库模型。我希望你的问题得到了解决。”
我遇到了相同的错误,但我没有使用模型优先。事实证明,我的EDMX文件包含对一个表的引用,尽管它在设计器中没有显示出来。有趣的是,当我在Visual Studio(2013)中搜索表名时,没有找到该表。
为了解决这个问题,我使用外部编辑器(Notepad++)在EDMX文件中查找有问题的表的引用,然后(小心地)删除了所有对该表的引用。很抱歉,我不知道EDMX文件最初是如何处于这种状态的。
在我的情况下,另一位开发者从底层数据库中删除了一些表格。当我意识到这一点并从实体中删除这些表格时,问题得到解决。这并不像听起来那么显而易见。
MyEntity1
和MyEntity
),通过edmx模型浏览器确认。这两个实体的某些因素混淆了处理过程。Search within file content
and Search External Files
remove all lines of codes referencing the missing entity. They will look like this:
public virtual DbSet< Entity1> Entity1 { get; set; }
web.config.connectionStrings
指向新的数据库而不是用于生成原始映射的数据库时,就会出现这个问题。如果您正在使用“数据库优先”方法,那么在插入新实体后,您只需要右键单击您的.edmx
文件并选择从模型生成数据库...
,然后再次通过Generate Database From Model
生成数据库即可。
从数据库更新模型对我无效。
我不得不删除冲突的实体,然后执行“从数据库更新模型”,最后重新构建解决方案。之后,一切正常运作。