LINQ to SQL - как бороться с изменениями в базе данных - PullRequest
0 голосов
/ 03 июня 2009

Я довольно новичок в LINQ to SQL, поэтому я мог бы пропустить что-то простое здесь.

Я создал слой LINQ to SQL, сгенерировал все файлы dbml и т. Д. И создал запрос LINQ, который работал нормально. Затем я внес изменения в базу данных и хотел, чтобы это изменение было отражено в слое ORM. Для этого я удалил свой слой ORM и создал новый (возможно, не самый лучший способ?).

Теперь мой код не может видеть объект datacontext в intellisense и не будет компилироваться. Я предполагаю, что это может быть что-то простое, но я также хотел бы понять общую картину того, как обновить слой LINQ to SQL ORM при изменении базы данных.

Ответы [ 3 ]

2 голосов
/ 03 июня 2009

Да, вы не хотите удалять весь файл DBML. Откройте его в конструкторе и удалите таблицу, которая изменилась. Затем перетащите его снова из «Проводника сервера» (в меню «Вид»). Это загрузит обновленную копию базы данных ... Обратите внимание: если обозреватель серверов уже открыт во время внесения изменений в схему SQL, вам необходимо обновить обозреватель серверов, чтобы он имел последние версии.

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

0 голосов
/ 03 июня 2009

Вы также можете использовать SQLMetal для обновления классов DBML. Некоторые люди даже пишут сценарий или командный файл для автоматизации процесса.

0 голосов
/ 03 июня 2009

Я помню, что у меня была эта проблема. Исправление очень просто. Восстановите свое решение! DataContext и другие подобные классы создаются во время сборки.

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

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