And*_*ena 91 .net entity-framework entity-framework-4
我正在使用Entity Framework 4和Model First方法.
我启动了项目,设计了实体并生成了数据库.一切都很好.
然后我需要回去为我的模型添加另一个实体.但是,当我将实体拖到EDMX时,我收到此错误:

好的!我只需要将Entity1映射到一个表..但是嘿!我正在使用Model First方法,我希望它在生成DDL时为我创建表.
我该如何解决此错误?
And*_*ena 144
这是因为EF4以模型优先的方式工作.
首次创建模型优先模型时,它处于SSDL不存在的状态.您可以拖动实体,关联它们等等,但是,如果您查看EDMX文件上的SSDL,您将看到没有任何实体在SSDL中具有关联的存储表.
单击Generate Database From Model上下文菜单项时,这会更改.令人困惑的部分是,此操作不仅仅是生成DDL脚本.实际上,它会更改EDMX文件以包含SSDL信息.从此时起,EDMX文件将进入一种状态,其中designer/CSDL中的每个实体都必须映射到SSDL中的实体.如果没有映射,则会触发编译时错误:
没有为以下EntitySet/AssociationSet指定映射 - (EntityName)
另一个有趣的事实是,它不是那种会阻止编译的错误.它确实会生成输出类库.它不应该是一个警告或什么?
要防止出现此错误,请在插入新实体后Generate Database From Model再次执行此操作.这将更新SSDL并修复映射.
编辑
如果您不使用模型优先并且"从数据库更新",则在删除数据库服务器中的表的情况下也会出现此错误.这是因为Entity Framework不会自动为您删除实体.手动删除实体,错误将消失.
Aze*_*mad 21
错误3027:没有为以下EntitySet/AssociationSet指定映射..." - 实体框架令人头疼
如果您正在使用实体框架开发模型,那么您可能会遇到这个恼人的错误:
错误3027:没有为以下EntitySet/AssociationSet指定映射[实体或关联名称]
当EDM上的一切看起来都很好时,这可能没有意义,但那是因为这个错误通常与EDM无关.应该说的是"重新生成数据库文件".
你看,实体在构建期间检查SSDL和MSL,所以如果你刚刚更改了EDM但没有使用Generate Database Model ...那么它会抱怨你的sql脚本中缺少了东西.
因此,简而言之,解决方案是:" 如果您正在进行模型优化开发,请不要忘记 每次更新EDM后都生成数据库模型.我希望您的问题得到解决".
我遇到了同样的错误,但我没有使用模型优先.事实证明,我的EDMX文件包含对表的引用,即使它没有出现在设计器中.有趣的是,当我在Visual Studio(2013)中对表名进行文本搜索时,找不到该表.
为了解决这个问题,我使用外部编辑器在EDMX文件中查找对违规表的引用,然后(小心地)删除对表的所有引用.我很遗憾地说,我不知道EDMX文件最初是如何进入这种状态的.
我有一个表更改,它创建了另一个带有数字 1 的实体(例如MyEntity1和 a MyEntity),正如 edmx 模型浏览器所确认的那样。关于这两个实体的一些事情一起混淆了处理。
删除表并重新添加它修复了它。
请注意,如果 TFS 已连接,则在删除后对 edmx 进行检入。然后,然后才获取最新的并在明确的两步过程中重新添加它。否则 TFS 会与相同命名实体的删除和重新添加混淆,这似乎会导致问题。