Подтвердить что ты не робот

Не удалось найти концептуальный тип модели

У меня есть две модели данных сущности в проектах MVC3 A и B.

Недавно я добавил новую модель данных сущности B, чтобы иметь дело с некоторыми новыми функциями, проблема в том, что теперь существующий код перестает работать, и я получаю следующую ошибку при попытке получить доступ к коду внутри модели сущности A.

Сообщение об ошибке:

Не удалось найти концептуальный тип модели "project.models.Bclass"

Я не понимаю, почему именно эта новая функциональность повлияла на текущий вид кода, поскольку модель сущностей A не изменилась. А функциональность B находится в отдельном классе и не мешает модели A.

Когда новый код удаляется из проекта и исключается модель B сущности, код работает так, как должен.

Вот некоторые из stacktrace из ошибки:

Exception : Could not find the conceptual model type for 'Project1.Models.CrossSession'.
Application Class - method : System.Data.Metadata.Edm.MetadataWorkspace -- GetEdmSpaceType
User : temp.user
Url : http://localhost/project1/auth/message
Stacktrace :    at System.Data.Metadata.Edm.MetadataWorkspace.GetEdmSpaceType(StructuralType objectSpaceType)
   at System.Data.Entity.Internal.InternalContext.UpdateEntitySetMappings()
   at System.Data.Entity.Internal.InternalContext.TryUpdateEntitySetMappingsForType(Type entityType)
   at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
   at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
   at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext()
4b9b3361

Ответ 1

Решение найдено. Он появляется в некоторых случаях (случайным образом), происходит смешение в коде, сгенерированном entity framework. Это, по-видимому, известная ошибка, и исправление должно появляться в будущих выпусках. В то же время путь вокруг этого заключается в перемещении efm в отдельный класс внутри решения.

Ответ 2

Решено это, обновив EntityFramework до последней версии (6.0) http://nuget.org/packages/EntityFramework/.

После установки он регенерирует модели, и он будет работать;)

Ответ 3

У меня была та же проблема с 2 различными .edmx файлами в одном проекте. Для первого .edmx model я использовал "Add Code Generation Item", для второй модели я этого не сделал. Проект строился правильно, но выбрасывал это исключение во время выполнения.

Я решил создать классы .tt для второго .edmx model.

Ответ 4

Одно из возможных объяснений заключается в том, что если вы используете первый подход к базе данных и забудьте добавить классы Entity, вы получите эту ошибку.

то есть. (из приведенного ниже руководства)

  • Щелкните правой кнопкой мыши по поверхности конструктора моделей.
  • В контекстном меню выберите Добавить элемент генерации кода.
  • В открывшемся диалоговом окне "Добавить новый элемент" выберите "Данные" из списка установленных типов шаблонов слева.
  • Выберите ADO.NET DbContext Generator и нажмите кнопку Добавить. Кнопка.

Обычно я использую руководство Джули Лерман; http://msdn.microsoft.com/en-us/data/gg685489.aspx

Ответ 5

Ну, я просто установил EF 4.1 и попытался объединить DbContext с EMDX. Когда я попытался передать представление, у меня получилась та же ошибка - вот почему я оказался здесь... Я думаю, что путь вокруг этого состоит в том, чтобы разделить функциональность выходит на отдельные ассембли в решении...

Ответ 6

Это также можно решить, создав новый edmx в visual studio 2010, чтобы он соответствовал более старым... (И копирование по файлам, которые он создает)

Ответ 7

Используя Visual Studio 12, проблема все еще не решена. В качестве альтернативного решения я настроил вторую модель данных SQL, используя "старомодные" классы данных, которые были созданы до даты сущностей - они все еще существуют, и они все еще работают. Используйте элемент "Добавить" - "Новый элемент" (категории данных) - "LINQ To SQL", откройте ServerExplorer, найдите сервер и базу данных, а затем перетащите его на панель классов данных. Старая школа - но удобно преодолевает эту крайне неудобную проблему, когда полная функциональность моделей сущностей не нужна.

Ответ 8

Я удалил модели edmx, удалил пакет Entity, переустановил объект 5.0 и работал.