Обновление моделей из базы данных в Entity Framework 6.0

ado.net-entity-data-model c# entity-framework entity-framework-6 sql-server-2008

Вопрос

Я разрабатываю службу веб-API (в Visual Studio 2013), и я добавил в свое решение модель данных сущности ADO.NET (сначала база данных).

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

Затем я внес некоторые изменения: я добавил два новых столбца в исходную базу данных, и я удалил один столбец. Поэтому, когда я пытаюсь обновить модель из базы данных, добавляются два новых столбца, а удаленный столбец все еще находится в моей модели и сообщение:

Ошибка 11009: свойство «Изображение» не отображается.

Где Image - имя удаляемого столбца в базе данных.

Можно ли вручную удалить это свойство из модели? Или есть еще один более чистый и безопасный способ сделать это?

Принятый ответ

Конечно, как утверждают другие, изменение подхода может быть лучшим способом работы с EF и DB, но, начиная с того факта, что вам нужна база данных, я думаю, что работа с базой данных First Model имеет свои преимущества, один из них (и из этого зависит ответ на ваш второй вопрос) - EDMX взят как есть, это подразумевает как сгенерированную часть кода, вы можете обновлять, уничтожать и воссоздавать это каждый раз, когда вам нужно или хотите, не теряя никаких изменений.

Теперь, как я уже говорил, характер сгенерированного кода подразумевает, что каждое изменение, внесенное вами в EDMX, будет потеряно, поэтому вы можете удалить свойство, но модель и db не прозрачно синхронизированы.

Я думаю, что лучший способ сделать это

  1. Обновление структуры базы данных
  2. Обновите EDMX, если обновление «сбой» означает, что изменения не отражены, уничтожить EDMX, а затем воссоздать его

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

Просто примечание: сначала работа с базой данных, может быть полезно с помощью частичных классов, чтобы добавить вещи в DbContext и связанные с ними объекты, чтобы добавить функциональность и поведение.




Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему