Как обновить только одну таблицу для модели из базы данных с помощью Entity Framework?

у меня есть модель, сгенерированная из БД с Entity Framework. Когда у меня есть какие-либо изменения в базе данных, я обновляю модель из базы данных, чтобы получить изменение в модели. Но это обновление применяется ко всем сущностям (таблицам), включенным в модель.

теперь я добавляю новый столбец в таблицу Tab1. Я не хочу, чтобы обновить модель из базы данных, как некоторые другие изменения, которые я не хочу включать в модель. Я могу добавить новое свойство в model for entity Tab1 вручную. затем это вызвало ошибку отображения.

поэтому мне нужно обновить Model.Store для таблицы, чтобы включить новый столбец. Это означает, что я хочу обновить модель только для Tab1.

Как я могу это сделать?

3 ответов


файл EDMX представляет собой XML-файл, который представляет собой комбинацию из 3 различных частей,которые составляют все это. Если вы щелкните правой кнопкой мыши на файле EDMX и выберите "Открыть с помощью... XML Editor " вы увидите 3 различных раздела:

  • <edmx:ConceptualModels>
  • <edmx:StorageModels>
  • <edmx:Mappings>

эти разделы можно редактировать вручную, на свой страх и риск! :-)
Таким образом, вы можете изменить только то, что вам нужно.

обратите внимание, что это также возможно чтобы создать CSDL, SSDL и MSL-файлы, а не внедрять их в двоичный файл, измените свойство "обработка мета-артефактов" вашей модели на "копировать в выходной каталог".

Если вы не хотите делать это вручную, есть Huagati DBML / EDMX инструмент, это бесплатно и вы можете скачать его с официальный сайт компании huagati или галерея visual studio, который является плагином Visual Studio, который позволяет выбрать, какие изменения это нужно сделать.


Я использую следующий (условный) трюк. Это можно сделать только тогда, когда таблица не зависит от таблицы, которую вы хотите обновить.

  1. удалить таблицу, которая должна быть обновлена.
  2. Правой Кнопкой Мыши на модели и выберите 'обновить модель из базы данных. Таблица будет показана на вкладке "добавить". Выберите эту таблицу и обновите модель.

Примечание : Если другие существующие таблицы имеют изменения в них, EF обновит эти изменения тоже.


есть способ сделать это автоматически.

щелкните правой кнопкой мыши файл edmx > обновить модель из базы данных > вкладка обновить > таблицы > выберите таблицу (вы хотите обновить) и нажмите Готово, вот и все.