Ошибки 11 и 2002: «EntityContainer ... не существует в MetadataWorkspace» - PullRequest
2 голосов
/ 11 сентября 2009

Я получаю следующую ошибку при попытке скомпилировать свое веб-приложение:

Ошибка 11 Ошибка 2002: EntityContainer 'SomeEntitieContainerName' для концептуальной модели, указанной в качестве части этого MSL, не существует в MetadataWorkspace.

У меня есть только *.edmx с именем BancorlineDB.edmx, для которого "Имя контейнера сущностей" установлено в "BancorLineEntidades".

Ответы [ 7 ]

7 голосов
/ 26 апреля 2014

Только мой цент за эту ошибку:

Работая со схемой Oracle db, я изменил размер поля первичного ключа в таблице. Это поле является внешним ключом в другой таблице. Я забыл изменить размер этой второй таблицы.

В моем веб-проекте .Net с Entity Framework 5.0 я воссоздаю модель из базы данных ... ОШИБКА 2002 EntityContainer бла ... бла ...

Я провел много времени с этой ... глупой ошибкой и более глупой информацией, поступающей из ODT 12.

3 голосов
/ 31 августа 2011

(поздно, я знаю, но этот вопрос получает много просмотров)

Бьюсь об заклад, вы где-то переименовали свой класс. Visual Studio не распространяет эти изменения в XML-файл. В edmx xml найдите тег <EntityContainerMapping CdmEntityContainer="badEntity" /> и замените badEntity правильным именем, в вашем случае BancorLineEntidades

Также связано - http://mvcmusicstore.codeplex.com/discussions/220395

2 голосов
/ 07 октября 2018

Формат .edmx может быть очень запутанным для устранения неполадок. В вашем случае это может быть случай, когда два имени не совпадают.

Откройте файл .edmx с помощью редактора XML и переключите все контуры, и вы сможете увидеть 3 раздела.

  1. SSDL и

  2. CSDL и

  3. C-S картирование.

SSDL Хранилище соответствует таблицам вашей базы данных. CSDL Концептуальный соответствует вашему DbSets или ObjectSets. Отображение 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>

Чтобы решить проблему, убедитесь, что имена StorageEntityContainer и CdmEntityContainer совпадают в пространстве C-S. В приведенном выше примере это SamDbStoreContainer и SamDbContainer

1 голос
/ 03 октября 2009

Похоже, что либо проблема с вашей конфигурацией, либо один из файлов инфраструктуры сущностей поврежден.

Самый быстрый способ исправить это, вероятно, удалить модель, убедиться, что все ссылки на нее в файлах конфигурации удалены, а затем восстановить модель из базы данных.

0 голосов
/ 04 июля 2018

Я также использую Oracle и Entity Framework. Я получал эту ошибку при первоначальной генерации модели из базы данных. Я попытался начать с одной таблицы, а затем изменить модель и добавить таблицы по одной (это заняло некоторое время). Это работало за исключением ~ 8 или около того таблиц. Я проверил внешние ключи, но не увидел ничего, что могло бы вызвать проблемы. Закончено ручное добавление новых сущностей в редакторе диаграмм edmx, ручное добавление свойств и сопоставление столбцов со свойствами вручную.

0 голосов
/ 19 августа 2016

Для меня у меня была похожая ошибка:

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.

Где у меня был свой блок в обоих:

    <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>
0 голосов
/ 14 декабря 2015

Попробуйте отключить столбцы внешнего ключа в модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...