EF6 все еще генерирует пространственные классы с неправильным использованием

1

У меня мало сущностей [таблиц] с DbGeography [география] и одной хранимой процедуры, которая использует ObjectParameter и IObjectContextAdapter.

Каждый раз, когда я обновляю модель EDMX из базы данных, мне нужно переписать:

//for each geography column
public System.Data.Spatial.DbGeography geoColum
//for class where stored procedure is generated
using System.Data.Objects;
using System.Data.Objects.DataClasses;

в

//for each geography column
public System.Data.Entity.Spatial.DbGeography geoColum
//for class where stored procedure is generated
using System.Data.Entity.Core.Objects;
using System.Data.Entity.Core.Objects.DataClasses;

в моем проекте, потому что он не компилируется с классами, сгенерированными EF.

Почему EF 6 все еще порождает это неправильно? Как заставить EF генерировать правильные пути?

Теги:
entity-framework
entity-framework-6
geospatial

1 ответ

2

Вы все еще используете генерацию кода из старой версии Entity Framework. Убедитесь, что вы правильно обновили проект до EF6.

Если у вас есть модели, созданные с помощью EF Designer, вам нужно будет обновить шаблоны генерации кода для генерации кода, совместимого с EF6.

Примечание. В настоящее время для Visual Studio 2012 и 2013 доступны только шаблоны EF 6.x DbContext Generator.

  1. Удалите существующие шаблоны генерации кода. Обычно эти файлы называются <edmx_file_name>.tt и <edmx_file_name>.Context.tt и вложены в ваш файл edmx в обозревателе решений. Вы можете выбрать шаблоны в обозревателе решений и нажать клавишу Del, чтобы удалить их.

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

    Примечание. В проектах VB.NET вам нужно включить "Показать все файлы", чтобы иметь возможность видеть вложенные файлы шаблонов.

  2. Добавьте соответствующий шаблон генерации кода EF 6.x. Откройте свою модель в EF Designer, щелкните правой кнопкой мыши по поверхности дизайна и выберите Добавить элемент генерации кода...

    • Если вы используете API DbContext (рекомендуется), то EF 6.x DbContext Generator будет доступен на вкладке " Данные ".

      Примечание. Если вы используете Visual Studio 2012, вам нужно будет установить EF 6 Tools для создания этого шаблона. Подробнее см. В разделе "Получить структуру Entity Framework".

    • Если вы используете ObjectContext API, вам нужно будет выбрать вкладку " Онлайн " и выполнить поиск EF 6.x EntityObject Generator.

  3. Если вы применили какие-либо настройки к шаблонам генерации кода, вам нужно будет повторно применить их к обновленным шаблонам.

Дополнительную информацию см. В разделе " Обновление до EF6".

  • 0
    Я начал этот проект с EF 6, поэтому я немного запутался, но постараюсь использовать эту информацию, если она поможет, спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню