Добавить столбец в базу данных - как мне обновить файл dbml? - PullRequest
23 голосов
/ 31 июля 2009

Есть ли способ обновить файл dbml или мне нужно удалить его и создать совершенно новый?

Ответы [ 6 ]

21 голосов
/ 31 июля 2009

Насколько я знаю, в конструкторе нет встроенных функций для обновления таблицы с изменениями в базе данных.

Существуют сторонние инструменты (http://www.huagati.com/dbmltools/), которые предлагают такую ​​функциональность.

Всякий раз, когда я сталкивался с этой проблемой, она была порядка одного или двух столбцов в таблице с уже настроенными множественными ручными связями, поэтому я просто редактировал XML (щелкните правой кнопкой мыши на DBML и выберите open with -> XML) и добавил столбцы в определение таблицы.

Когда файл DBML сохраняется, связанный файл .designer.cs автоматически обновляется с кодом для новых добавленных столбцов. Поэтому нет необходимости удалять и заново создавать таблицы в режиме конструктора.

13 голосов
/ 31 июля 2009

Я слышал о одном странном приеме , где вы создаете новую сущность для вашей измененной таблицы, а затем перетаскиваете / вырезаете новое свойство из новой сущности в старую. Однако никогда не пробовал.

1 голос
/ 21 июня 2013

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

Лучший способ для меня был такой:

Добавить ту же таблицу в dbml Открыть DBML с редактированием XML (щелкните правой кнопкой мыши -> Открыть с помощью) Скопируйте секцию столбца XML из таблицы, которую вы только что добавили, и вставьте ее в раздел столбца поврежденной таблицы. Сохранить Откройте Dbml обычным способом Удалить добавленную таблицу

1 голос
/ 31 июля 2009

Нет механизма автоматического обновления DBML или указания DBML перечитывать базу данных.

Я полагаю, что самый простой способ - открыть файл dbml в конструкторе, удалить таблицу, а затем повторно добавить его в область дизайна. Хотя это может зависеть от сложности базы данных, то есть вы можете потерять определенную информацию.

Я бы сделал резервную копию dbml-файла, прежде чем пытаться:)

0 голосов
/ 31 июля 2009

Если вы внесли изменения в свою модель, удаление таблицы и ее повторное добавление может вызвать больше проблем, чем оно того стоит. В этих случаях я бы рекомендовал вручную изменить конструктор (или файл dbml). Не прикасайтесь к файлу .Designer, так как эти изменения будут перезаписаны.

Другая альтернатива, которую следует рассмотреть, - это использование SqlMetal как части процесса сборки для регенерации модели из базы данных.

0 голосов
/ 31 июля 2009

Обычно это довольно больно. Перекомпилируйте, выключите VS, снова откройте его и т.д. Это должно работать, но для меня всегда была задержка. Может быть проще вручную создать вашу модель с помощью LINQ, хотя это то, что я делаю. Таким образом, у меня есть полный контроль над этим.

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