.net – 为什么我得到这个错误:没有为以下EntitySet / AssociationSet – Entity1指定映射?

我使用Entity Framework 4与Model First方法。

我开始项目,设计实体并生成数据库。一切工作正常。

然后我需要回去,并添加另一个实体到我的模型。然而,当我拖动一个实体到EDMX我得到这个错误:

好的!我只需要映射Entity1一个表..但嘿!我使用Model First方法,我期望它在我生成DDL时为我创建表。

我如何解决这个错误?

这是因为EF4使用模型优先。

当您首次创建模型优先模型时,它处于SSDL不存在的状态。您可以拖动实体,关联它们等等,但是,如果您查看EDMX文件上的SSDL,您将看到没有实体在SSDL中有关联的存储表。

当您单击从模型生成数据库上下文菜单项时,此更改。令人困惑的部分是,此操作不仅仅是生成DDL脚本。实际上,它会更改EDMX文件以包括SSDL信息。从这一点开始,EDMX文件将进入一种状态,其中设计器/ CSDL中的每个实体都必须映射到SSDL中的实体。如果没有映射,它将触发编译时错误:

No mapping specified for the following EntitySet/AssociationSet – (EntityName)

另一个有趣的事实是,它不是那种会阻止编译的错误。它将确实生成输出类库。不应该是一个警告或什么吗?

要防止此错误,在插入新实体后,您必须执行的操作是再次生成数据库。这将更新SSDL并修复映射。

编辑

如果不使用模型优先和“从数据库更新”,在DB服务器中删除表时,也会出现此错误。这是因为实体框架不会自动为您删除实体。手动删除实体,错误将消失。

http://stackoverflow.com/questions/5667355/why-am-i-getting-this-error-no-mapping-specified-for-the-following-entityset-as

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:.net – 为什么我得到这个错误:没有为以下EntitySet / AssociationSet – Entity1指定映射?