Как обновить только одну таблицу для модели из базы данных с помощью Entity Framework?
У меня есть модель, сгенерированная из db с Entity Framework. Когда у меня есть какие-либо изменения в базе данных, я обновляю модель из базы данных, чтобы получить изменение в модели. Но это обновление применяется ко всем сущностям (таблицам), включенным в модель.
Теперь я добавляю новый столбец в таблицу Tab1. Я не хочу обновлять модель из базы данных как некоторые другие изменения, которые я не хочу включать в модель. Я могу добавить новое свойство в модель для элемента Tab1 вручную. то это вызвало ошибку отображения.
Поэтому мне нужно обновить Model.Store
, чтобы таблица включала новый столбец. Это означает, что я хочу обновить модель только для Tab1
.
Как я могу это сделать?
Ответы
Ответ 1
Файл EDMX представляет собой XML файл, который представляет собой комбинацию из трех разных частей, которые составляют все. Если вы щелкните правой кнопкой мыши по файлу EDMX и выберите "Открыть с помощью... Редактора XML", вы увидите 3 разных раздела:
-
<edmx:ConceptualModels>
-
<edmx:StorageModels>
-
<edmx:Mappings>
Эти разделы можно редактировать вручную, на свой страх и риск!:-)
Таким образом вы можете изменить только то, что вам нужно.
Обратите внимание, что также возможно генерировать файлы CSDL, SSDL и MSL, а не добавлять их в двоичный файл, изменив свойство "Meta Artifact Processing" вашей модели на "Копировать в выходной каталог".
Если вы не хотите делать это вручную, инструмент Huagati DBML/EDMX, он бесплатный, и вы можете скачать его с официальный сайт huagati или визуальная галерея студии, которая является Плагин Visual Studio, который позволяет вам выбрать, какие изменения необходимо выполнить.
Ответ 2
Я использую следующий (условный) трюк. Это можно сделать только в том случае, если таблица не зависит от таблицы, которую вы хотите обновить.
- Удалить таблицу, которая должна быть обновлена.
- Щелкните правой кнопкой мыши на модели и выберите "Обновить модель из базы данных". Таблица будет показана на вкладке "Добавить". Выберите эту таблицу и обновите модель.
Меры предосторожности. Если в других существующих таблицах есть изменения, EF также обновит эти изменения.
Ответ 3
Существует способ сделать это автоматически.
щелкните правой кнопкой мыши файл edmx > модель обновления из базы данных > вкладка "Обновить" > "Таблицы" > выберите таблицу (вы хотите обновить) и нажмите "Готово".