Не удалось найти концептуальный тип модели
У меня есть две модели данных сущности в проектах 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()
Ответы
Ответ 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 и работал.