Linq to SQL .dbmlファイルを更新するにはどうすればよいですか?
モデルの同期を保つには、3つの方法があります。
変更したテーブルをデザイナーから削除し、データベースエクスプローラーからデザイナー画面にドラッグして戻します。これを確実に機能させるには、次のことが必要であることがわかりました。
a。データベースエクスプローラーでデータベーススキーマを更新します(右クリックして更新)
b。テーブルを削除した後、デザイナーを保存します
c。テーブルをドラッグして戻した後、再度保存します。
注ただし、プロパティを変更した場合(たとえば、関連付けの子プロパティをオフにした場合)、これらの変更は明らかに失われます-もう一度作る必要があります。
SQLMetalを使用して、データベースからスキーマを再生成します。 これをスクリプト化する方法 を示す多くのブログ投稿を見てきました。
DBMLの[プロパティ]ペインで直接変更します。これは、フィールドでnullを許可するなどの簡単な変更に対して機能します。
Visual Studio 2015、2017、2019では、DBMLデザイナーはデフォルトではインストールされません。VSを閉じて、VSインストーラーを起動し、インストールを変更する必要があります。 LINQ to SQLツールは、インストールする必要がある機能です。 VS 2017/2019の場合、Individual Components> Code Toolsにあります。
また、CodeSmithに基づいた PLINQO コード生成テンプレートのセットをチェックアウトすることもできます。これにより、Linq-to-SQLの素晴らしい機能を使用できます。
http://www.plinqo.com のPLINQOサイトをチェックして、紹介動画をご覧ください。
私が知っている2番目のツールは Huagati DBML/EDMX tools です。これにより、DBML(Linq-to-SQL)およびEDMX(Entity Framework)マッピングファイルの更新が可能になります(命名規則など)。 )。
マーク
すべての.DBMLファイル内の各テーブルのinformation_schemaモデルを動的にクエリし、データベースからの新しいスキーマ情報で.DBMLファイルの一部を上書きするカスタム記述T4テンプレートを使用します。私は非常にこのようなソリューションを実装することをお勧めします-それは私に時間を節約しました関連付けを維持します。このソリューションを使用すると、スキーマが変更されたときにコンパイル時エラーが発生します。ただし、バージョン管理システムを使用していることを確認する必要があります。差分は本当に便利だからです。これは、DBスキーマの最初のアプローチで開発している場合にうまく機能する優れたソリューションです。もちろん、私の会社のコードを共有することはできませんので、あなた自身でこれを書いてください。しかし、Linq-to-XMLをある程度知っていて、学校に行くことができる場合 このプロジェクトで であれば、あなたが行きたいところに行くことができます。
テーブルを更新してからDBMLを更新することには微妙な違いがあります...既存のテーブルに変更が加えられた場合、外部キー関係がすぐに引き継がれるとは限りません。回避策は、プロジェクトのビルドを実行してから、テーブルを再度追加することです。これをMSに報告し、VS2010で修正されました。
主な回答に記載されている指示は明確ではないことに注意してください。テーブルを更新するには
Dbmlを更新すると、生成されるコードも更新されるため、VS2008に組み込まれているビジュアルデザイナーを使用することをお勧めします。ビジュアルデザイナーの外部でdbmlを変更すると、基になるコードが同期しなくなります。
ストアドプロシージャの更新の場合は、.dbmlファイルから削除し、再度挿入する必要があります。ただし、ストアドプロシージャに2つのパスがある場合(例:何かの場合、いくつかの列を表示する場合、または他の列を表示する場合)、2つのパスの列エイリアスが同じであることを確認してください!!!それ以外の場合、最初のパス列のみが存在します。