【问题标题】:Errors 11 and 2002: "The EntityContainer ... does not exist in MetadataWorkspace"错误 11 和 2002:“EntityContainer ... 在 MetadataWorkspace 中不存在”
【发布时间】:2009-09-11 17:47:08
【问题描述】:

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

错误 11 错误 2002:作为此 MSL 的一部分指定的概念模型的 EntityContainer“SomeEntieContainerName”在 MetadataWorkspace 中不存在。

我只有一个名为 BancorlineDB.edmx 的 *.edmx,它的“实​​体容器名称”设置为“BancorLineEntidades”。

【问题讨论】:

    标签: .net linq entity-framework


    【解决方案1】:

    这个错误只是我的一分钱:

    处理 Oracle 数据库架构我修改了表上主键字段的大小。 该字段是另一个表的外键。 我忘了修改第二张桌子的大小。

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

    我花了很多时间处理这个......愚蠢的错误以及来自 ODT 12 的更愚蠢的信息。

    【讨论】:

      【解决方案2】:

      .edmx 格式的故障排除可能非常令人困惑。在您的情况下,可能是两个名称不匹配的情况。

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

      1. SSDL

      2. CSDL

      3. C-S 映射。

      SSDL Storage 对应于您的数据库表。 CSDL Conceptual 对应于您的 DbSetsObjectSetsC-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>
      

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

      【讨论】:

        【解决方案3】:

        (我知道晚了,但这个问题得到了很多人的关注)

        我打赌你在某个地方重命名了你的班级。 Visual Studio 不会将这些更改传播到 xml 文件。在 edmx xml 中,查找 &lt;EntityContainerMapping CdmEntityContainer="badEntity" /&gt; 标记,并将 badEntity 替换为正确的名称,在您的情况下为 BancorLineEntidades

        也相关 - http://mvcmusicstore.codeplex.com/discussions/220395

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

          • 怎么做,因为我试图删除我的模型并重新创建它,但总是同样的问题。我也尝试了新项目但同样的错误
          • @Chlebta 请问您的问题是如何解决的?我也有同样的情况,删除再次生成它的模型并不能解决问题:(
          • @Younes 抱歉我不记得了
          【解决方案5】:

          对我来说,我遇到了类似的错误:

          Schema specified is not valid. Errors: \r\nEntities.MyModel.msl(203,12) : error 2009: Content not valid. The conceptual side Member or Property 'Unit' specified as part of this MSL does not exist in MetadataWorkspace.
          

          我在这两个地方都有我的 UNIT:

              <EntityTypeMapping TypeName="IsTypeOf(MyObjectCharacteristic)">
                <MappingFragment StoreEntitySet="OBJECT_CHARACTERISTICS">
                  <ScalarProperty Name="Unit" ColumnName="UNIT" />
                  <ScalarProperty Name="ClassName" ColumnName="CLASSNAME" />
                  <ScalarProperty Name="MyObjectID" ColumnName="OBJECTID" />
                </MappingFragment>
              </EntityTypeMapping>
          
            <EntitySet Name="OBJECT_CHARACTERISTICS" EntityType="Self.OBJECT_CHARACTERISTICS" store:Type="Views" store:Schema="DBA">
              <DefiningQuery>SELECT
              dbo.RESOURCE.OBJECTID,
              dbo.RESOURCE.CLASSNAME,
              dbo.RESOURCE.UNIT
              FROM dbo.RESOURCE
              </DefiningQuery>
            </EntitySet>
          

          此外,我必须确保表示数据库表的对象的关联类实体详细信息具有 UNIT 数据成员:

          <EntitySetMapping Name="ObjectCharacteristics">
              <EntityTypeMapping TypeName="IsTypeOf(ObjectCharacteristic)">
                  <ScalarProperty Name="Unit" ColumnName="UNIT" />
                  <ScalarProperty Name="ClassName" ColumnName="CLASSNAME" />
                  <ScalarProperty Name="ObjectId" ColumnName="OBJECTID" />
              </EntityTypeMapping>
          </EntitySetMapping>
          

          还有,

          <EntityType Name="ObjectCharacteristic" A:TypeAccess="Public" xmlns:a=""http://schemas.microsoft.com/ado/2006/04/codegeneration">
              <Key>
                  <PropertyRef Name="ObjectId" />
              </Key>
              <Property Name="ObjectId" Type="String" />
              <Property Name="ClassName" Type="String" />
              <Property Name="Unit" Type="String" />
          </EntityType>
          

          【讨论】:

            【解决方案6】:

            我也在使用 Oracle 和实体框架。最初从数据库生成模型时出现此错误。我尝试从一张表开始,然后修改模型并一次添加一张表(这需要一段时间)。这工作除了〜8个左右的桌子。我检查了外键,但没有看到任何可能导致问题的东西。最终在 edmx 图表编辑器中手动添加新实体、手动添加属性以及手动将列映射到属性。

            【讨论】:

              【解决方案7】:

              修复 EDMX 文件后,有时您必须重新启动 Visual Studio 才能清除此错误。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2016-04-25
                • 2022-12-27
                • 2015-11-25
                • 2012-02-09
                • 2012-04-27
                相关资源
                最近更新 更多