错误11和2002:"EntityContainer ...在MetadataWorkspace中不存在"

Cle*_*ton 2 .net linq entity-framework

我尝试编译我的Web应用程序时收到以下错误:

错误11错误2002:MetadataWorkspace中不存在指定为此MSL一部分的概念模型的EntityContainer"SomeEntitieContainerName".

我只有一个*.edmx名为BancorlineDB.edmx的"实体容器名称"设置为"BancorLineEntidades".

Cae*_*sar 7

这个错误只是我的分:

使用Oracle数据库模式我修改了表上主键字段的大小.该字段是另一个表上的外键.我忘了修改第二张表的大小.

在我的带有Entity Framework 5.0的.Net Web项目中,我从数据库中重新生成模型... ERROR 2002 EntityContainer bla ... bla ...

我花了很多时间来讨论这个......愚蠢的错误和来自ODT 12的更愚蠢的信息.


Chu*_*Tey 6

.edmx格式可以非常混乱排查。在您的情况下,可能是两个名称不匹配的情况。

.edmx使用 XML 编辑器打开文件,并切换所有大纲,您应该能够看到 3 个部分。

  1. SSDL

  2. CSDL

  3. C-S 映射。

SSDL 存储对应于数据库中的表。该CSDL 概念对应于您DbSetsObjectSets。该C-S映射是如何每个概念集涉及所述存储集。

<edmx:Edmx Version="3.0" xmlns:edmx="http://schemas.microsoft.com/ado/2009/11/edmx">
  <!-- EF Runtime content -->
  <edmx:Runtime>
    <!-- SSDL content -->
    <edmx:StorageModels>
      <Schema Namespace="SamDb.Store" Alias="Self" Provider="System.Data.SqlClient"...
        <EntityContainer Name="SamDbStoreContainer">
    </edmx:StorageModels>
    <!-- CSDL content -->
    <edmx:ConceptualModels>
      <Schema Namespace="SamDb" Alias="Self" ...>
        <EntityContainer Name="SamDbContainer" ...>
    </edmx:ConceptualModels>
    <!-- C-S mapping content -->
    <edmx:Mappings>
      <Mapping Space="C-S" xmlns="http://schemas.microsoft.com/ado/2009/11/mapping/cs">
        <EntityContainerMapping 
           StorageEntityContainer="SamDbStoreContainer"
           CdmEntityContainer="SamDbContainer" ...>
  </edmx:Runtime>
</edmx:Edmx>
Run Code Online (Sandbox Code Playgroud)

要解决此问题,您必须确保CS 空间中的StorageEntityContainerCdmEntityContainer名称匹配。在上面的示例中,它是SamDbStoreContainerSamDbContainer


Shi*_*iji 1

听起来您的配置有问题,或者实体框架文件之一已损坏。

修复此问题的最快方法可能是删除模型,确保删除配置文件中对其的所有引用,然后从数据库重新生成模型。