Вопрос по linq-to-sql – Как обновить файл Linq to SQL dbml?

192

Как обновить файл Linq to SQL .dbml?

Ваш Ответ

7   ответов
4

который динамически запрашивает модель information_schema для каждой таблицы во всех наших файлах .DBML, а затем перезаписывает части файла .DBML свежей информацией о схеме из базы данных. яhighly рекомендую внедрить подобное решение - оно сэкономило мне кучу времени, и в отличие от удаления и повторного добавления таблиц в модель, вы сохраняете ассоциации. С этим решением вы будете получать ошибки во время компиляции, когда ваша схема изменится. Вы хотите убедиться, что вы используете систему контроля версий, потому что дифференцирование действительно удобно. Это отличное решение, которое хорошо работает, если вы разрабатываете сначала схему БД. Конечно, я не могу поделиться кодом моей компании, поэтому вы сами можете написать это самостоятельно. Но если вы знаете какой-нибудь Linq-to-XML и можете ходить в школуна этом проекте, вы можете добраться туда, где вы хотите быть.

Да, но визуальный дизайнер в VS2008 не может обнаружить и отреагировать на изменения в вашей базовой базе данных :-( За исключением удаления и повторного добавления, обновление вашей модели не поддерживается :-(
Хотя это правда, вопрос был очень расплывчатым, и в нем конкретно не упоминалось, как обновить модель при изменении базы данных.
Я не верю, что это исправлено, потому чтоconnect.microsoft.com/VisualStudio/feedback/details/414601/… не фиксируется
2

встроенный в VS2008, так как обновление dbml также обновляет сгенерированный для вас код. Изменение dbml вне визуального конструктора приведет к несинхронизации основного кода.

Да, но визуальный дизайнер в VS2008 не может обнаружить и отреагировать на изменения в вашей базовой базе данных :-( За исключением удаления и повторного добавления, обновление вашей модели не поддерживается :-(
Хотя это правда, вопрос был очень расплывчатым, и в нем конкретно не упоминалось, как обновить модель при изменении базы данных.
2

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

Дисплей DBML не показывает новые ограничения внешнего ключа

Обратите внимание, что инструкции, приведенные в основном ответе, не ясны. Обновить таблицу

Open up the dbml design surface Select all tables with Right->Click->Select All or CTRLa CTRLx (Cut) CTRLv (Paste) Save and rebuild solution.
Я не верю, что это исправлено, потому чтоconnect.microsoft.com/VisualStudio/feedback/details/414601/… не фиксируется
0

dbml и заново вставить ее. Но если хранимая процедура имеет два пути (например: если что-то; отображать некоторые столбцы; еще отображать некоторые другие столбцы), убедитесь, что два пути имеют одинаковые псевдонимы столбцов !!! В противном случае будут существовать только первые столбцы пути.

241

Delete the modified tables from the designer, and drag them back onto the designer surface from the Database Explorer. I have found that, for this to work reliably, you have to:

a. Refresh the database schema in the Database Explorer (right-click, refresh)
b. Save the designer after deleting the tables
c. Save again after dragging the tables back.

Note though that if you have modified any properties (for instance, turning off the child property of an association), this will obviously lose those modifications — you'll have to make them again.

Use SQLMetal to regenerate the schema from your database. I have seen a number of blog posts that show how to script this.

Make changes directly in the Properties pane of the DBML. This works for simple changes, like allowing nulls on a field.

Конструктор DBML не устанавливается по умолчанию в Visual Studio 2015 или Visual Studio 2017. Вам придется закрыть VS, запустить установщик VS и изменить установку.LINQ to SQL tools это функция, которую вы должны установить.

Попробовал первый способ и все заработало. Думаю, это будет работать для небольшой БД.
Поддержка VS была запрошена на & # x200B;connect.microsoft.com/VisualStudio/feedback/details/260723/…, но MS не хочет исправлять.
Я пробовал 1a и 1c без 1b и получал «Указанный актерский состав недействителен» ошибки при выполнении простого выбора в представлении. В том числе 1b исправил это для меня
44

например, добавив столбцы, сделайте следующее:

Update your SQL Server Explorer window. Drag the "new" version of your table into the .dbml-diagram (report1 in the picture below).

report1 is the new version of the table

Mark the added columns in the new version of the table, press Ctrl+C to copy the added columns.

copy the added columns

Click the "old" version of your table and press Ctrl+V to paste the added columns into the already present version of the table.

paste the added columns to the old version of the table

Это гораздо менее навязчиво, чем принятый ответ, и продолжает хорошо работать в конце 2018 года!
Кажется, это самый простой, наименее разрушительный метод, который не требует дополнительных инструментов и прекрасно работает в VS2017
Это лучший ответ для быстрого (и не очень быстрого редактирования схемы). Я потратил много времени, чтобы внешний вид модели выглядел красиво. Я терпеть не мог удалять и перетаскивать файлы обновлений. Для добавленных полей это прекрасно работает!
Для меня это решило две проблемы. Первый - когда я попытался скопировать и вставить аналогичное поле в таблицу, а затем переименовать его. Это создало нон-стоп "не указано" ошибка сборки при проверке. Другая проблема заключалась в том, что если я удалил таблицу, а затем добавил ее полностью, это привело к гораздо большим различиям в git (поскольку объекты были перегруппированы в файле). При этом методе я вижу только вставку нового поля, которое намного чище и легче для понимания позже.
5

PLINQO набор шаблонов генерации кода, основанных на CodeSmith, которые позволяют вам сделать много полезных вещей для Linq-to-SQL и с ним:

generate one file per class (instead of a single, huge file) update your model as needed many more features

Посетите сайт PLINQO по адресуhttp://www.plinqo.com   и посмотрите видео вступления.

Второй инструмент, который я знаю, этоИнструменты Huagati DBML / EDMX, которые позволяют обновлять файлы отображения DBML (Linq-to-SQL) и EDMX (Entity Framework) и многое другое (например, соглашения об именах и т. д.).

Марк

Только что вырвал CodeSmith / PLINQO, я настоятельно советуюagainst принимая этот подход. Конечно, этот ответ старше 4 лет ...
Да, это. Переход к EF после проверки того, что приложение будет работать с простым DBML вместо PLINQO, был следующим шагом, который я предпринял, чтобы стереть старое приложение.
@Yuck: на данный момент я настоятельно рекомендую вообще не использовать Linq-to-SQL - вместо этого используйте Entity Framework, гораздо лучший выбор!

Похожие вопросы