LinqToSqlを使用して、ASP.net アプリケーションの DataContext.dbml クラスを一般化するために SqlMetal を使用しています。最初に DataContext.dbml ファイルを作成したとき、Visual Studio はこれを使用して、関連する DataContext.designer.cs ファイルを作成しました。このデザイナー ファイルには、アプリ全体で使用される C# の DataContext クラス (および dbml ファイルの XML から派生) が含まれており、SqlMetal の出力と LinqToSql での DataContext の使用との間のギャップを埋めるために不可欠です。
ただし、データベースに変更を加えて dbml ファイルを再作成すると、web サイトでデザイナー ファイルが再生成されません。代わりに、古いデザイナー ファイルが維持されます (したがって、LinqToSql DataContext クラスを介して DBML ファイルへの変更にアクセスすることはできません)。
これまでのところ、デザイナー ファイルを再生成するために使用できた唯一のプロセスは次のとおりです。
- Windows エクスプローラーに移動し、dbml ファイルと designer.cs ファイルの両方を削除します。
- Visual Studio に移動し、ソリューション エクスプローラーで [更新] をクリックします。dbml および designer.cs ファイルがプロジェクトから消えます。
- SqlMetal を使用して dbml ファイルを再生成します。
- Visual Studio に移動し、ソリューション エクスプローラーで [更新] をクリックします。これで、designer.cs ファイルが再作成されました。
まだdesigner.csファイルがない新しいdbmlファイルが検出された場合、Visual Studioはdesigner.csファイルのみを生成するようです。このプロセスは、いくつかの手動の手順を必要とし、ソース管理を台無しにするため、かなり非現実的です。
上記の手動の削除/更新/再生成/削除プロセスに従わなくても、designer.cs ファイルを自動的に再生成する方法を知っている人はいますか?