X Уже содержит определение Y с EntityFramework? (простая база данных)
У меня есть 3 таблицы в моей базе данных MS SQL, и я добавил EntityFramework (последний) в мой проект, где я импортировал эти 3 таблицы. Первая проблема заключалась в том, что никаких объектов не было создано, поэтому я изменил "Стратегия генерации кода" от None
до Default
.
После сборки я получаю
X Уже содержит определение для Y
для всех свойств сущностей.
При приближении к нему генерируется частичный ex Users.cs
и один частичный User
in в MainModel.Designer.cs
?
Почему он генерирует User.cs
? У меня аналогичная настройка в другом проекте, и EF настроен с одинаковыми настройками, нет User.cs
?
Edit1. Я вижу одну вещь, которая отличается, и thats Использовать сильные пространственные типы, которые установлены в False в провальном проекте, однако невозможно установить его в true (grayed)?
Ответы
Ответ 1
Вы должны использовать стратегию генерации кода None
для вашего .edmx файла. Или удалите шаблоны MainModel.tt
и MainModel.Context.tt
, которые генерируют объекты модели и контекст.
Если вы используете стратегию генерации кода Default
, то сущности и контекст будут сгенерированы в файл MainModel.Designer.cs
. Это были бы стандартные объекты, унаследованные от EntityObject
, контекст будет унаследован от ObjectContext
. С Entity Framework 5 у нас есть генерация объектов POCO. И целая генерация выполняется в шаблонах T4, которые генерируют контекст, унаследованный от объектов DbContext
и POCO без базового типа (ну, только объект).
Если в дизайнере edmx есть как шаблоны, так и активированные генерации кода, тогда будут созданы два набора объектов. Вот почему у вас конфликты имен.
Ответ 2
- Щелкните правой кнопкой мыши модель Entity.
- Перейдите к свойствам и удалите имя по умолчанию в "Пользовательский инструмент".
- Назначьте edmx в model.tt и model.context
- Создайте и выполните его, вы будете свободны от ошибок.