实体框架简单名称会导致某些项目出现问题,但不会导致其他项

时间:2015-11-12 18:21:59

标签: c# asp.net entity-framework azure-webjobs

我有一个Visual Studio 2015解决方案,其中包含大约20个项目。每个项目都引用了两个使用Entity Framework 6的类库。在这些类库中,我们有类似的命名对象,它们位于不同的命名空间中。添加新的Azure Web作业项目后,我现在得到以下例外(仅适用于Web作业项目):

  

未处理的类型' System.NotSupportedException'发生在EntityFramework.dll

中      

其他信息:类型' AAA.BBB.Entity'和类型' AAA.BBB.Entities.Entity'两者都有相同的简单名称'实体'所以不能在同一型号中使用。给定模型中的所有类型都必须具有唯一的简单名称。使用' NotMappedAttribute'或者在Code First Fluent API中调用Ignore,以明确地从模型中排除属性或类型。

其他几个项目都有效,并且不会抛出此异常 - REST API,Websockets API,测试项目和标准Web应用程序。我已经比较了项目参考,属性,包等,并且无法弄清楚它们之间的区别。我能看到的唯一区别是Web Job是一个控制台应用程序,其他的是Web应用程序和测试项目。

1 个答案:

答案 0 :(得分:3)

这是EF的一个已知限制 - https://entityframework.codeplex.com/workitem/483。不幸的是,由于EF6是如何构建的,因此修复起来非常困难。请注意,如果模型中只使用了其中一个碰撞类,那么如果您使用的是Code First,则应该没问题 - 但如果您有EDMX模型,则会失败。无论您是使用代码还是EDMX,尝试在同一模型中使用这两种类型总是会失败。