Best way to update LINQ to SQL classes after database schema change

Viewed 36645

I'm using LINQ to SQL classes in a project where the database design is still in a bit of flux.

Is there an easy way of synchronising the classes with the schema, or do I need to manually update the classes if a table design changes?

7 Answers

You can use SQLMetal.exe to generate your dbml and or cs/vb file. Use a pre-build script to start it and target the directory where your datacontext project belongs.

C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64\sqlmetal.exe 
  /server:<SERVER> 
  /database:<database> 
  /code:"path\Solution\DataContextProject\dbContext.cs" 
  /language:csharp 
  /namespace:<your namespace>

I haven't tried it myself, but Huagati DBML/EDMX Tools is recommended by other people.

Huagati DBML/EDMX Tools is an add-in for Visual Studio that adds functionality to the Linq2SQL/DBML diagram designer in Visual Studio 2008, and to the ADO.NET Entity Framework designer in Visual Studio 2008 SP1. The add-in adds new menu options for updating Linq2SQL designer diagrams with database changes, for renaming Linq-to-SQL (DBML) and EF (EDMX) classes and properties to use .net naming conventions, and for adding documentation/descriptions to Linq-to-SQL generated classes from the database properties.

Screenshot of DBML Tools

DamienG has written some t4 templates which can replace some of what VS generates for you. These can be rerun whenever you like via a command line tool.

T4 templates have the added benefit of being editable. This allows you to tweak what is generated to you hearts content.

I think Jeff complained about this recently. One common technique is to drag all the objects into the designer again...

I hope someone else chimes in with a better approach!

Related