我们有一个由两个项目组成的解决方案 - 一个控制台应用程序项目和一个 Web 应用程序项目。其中每个都有相同的架构,但名称不同的 .edmx 文件,用于访问同一数据库。
控制台应用程序作为计划任务在托管 Web 应用程序的同一服务器上运行。 Web 应用程序包含对控制台应用程序的引用,因为 Web 应用程序中的某些操作会导致调用控制台应用程序中的方法。 该组合已在我们的临时环境中成功运行了数月。
实时发布后,我们每天至少会看到一次以下错误消息:
指定的架构无效。错误:
ProjectName.csdl(3,4) : error 0019: The EntityContainer name must be unique. An EntityContainer with the name 'ProjectEntities' is already defined. ProjectName.csdl(63,4) : error 0019: Each type name in a schema must be unique. Type name 'ProjectModel.DataSource' was already defined. ProjectName.csdl(75,4) : error 0019: Each type name in a schema must be unique. Type name 'ProjectModel.Error' was already defined.
继续,列出架构中的所有类型名称。
可以通过回收应用程序池或重新启动 IIS 来修复此错误。
请注意,只有在 Web 应用程序运行一段时间后才会出现该错误 - 当我们编译或第一次访问该应用程序时,不会出现该错误。
我最初的理论是,两个实体容器相互冲突,因为 Web 应用程序引用控制台应用程序,但它们具有不同的名称,这会导致错误“EntityContainer 名称必须是唯一的。名称为 ' 的 EntityContainer” ProjectEntities' 已经定义”令人困惑。
最佳答案
转到该 bin 文件夹并手动删除 dll 和 pdb 文件。
关于.net - Entity Framework 错误 - "The EntityContainer name must be unique",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/979664/