Linq to SQL を使い始めたばかりですが、dbml ファイルを管理するために共有できるベスト プラクティスがあるかどうか疑問に思っています。
- データベースでそれらを最新の状態に保つにはどうすればよいですか?
- データベース全体に対して 1 つの dbml ファイルを使用していますか、それとも複数の論理ユニットに分割されていますか?
- このファイルの管理はチーム環境でどのように機能しますか?
その他のヒントやコツは大歓迎です。
Linq to SQL を使い始めたばかりですが、dbml ファイルを管理するために共有できるベスト プラクティスがあるかどうか疑問に思っています。
その他のヒントやコツは大歓迎です。
SqlMetalを見たことがありますか?あまり宣伝されていませんが、公式にサポートされています。これを使用して、コマンドラインからdbmlをビルドできます-dbの継続的インテグレーションの更新の一部として使用しました(ただし、これを行う場合は、コードの分離が非常に優れていることを確認してください-部分的なクラスは救世主です-dbmlが取得するように上書きされます)。
正しく思い出せば、Visual Studioのモデルデザイナーとまったく同じ機能はありません(複数形の処理方法が異なると思います)。ベンホールのブログにそれについての良い投稿があります。
L2S デザイナーがデータベース構造との同期をサポートしていないという事実は、私の考えでは大きな制限です。ただし、いくつかの再同期機能を提供する利用可能なアドインがあります。
http://www.huagati.com/dbmltools/
残念ながら、もう無料ではありません。
DBML を管理するためのその他のヒントやコツについて尋ねられたので...
DBML ファイルがデータベースから更新されると、デフォルトの列値など、特定のスキーマ設定が反映されず、設定を手動で変更する必要があります。これにより、DBML を更新するたびに、手動で調整する必要がある場所を認識または記憶せずに時間を無駄にする可能性があり、コードが失敗し始めます。
これを防ぐための 1 つの秘訣は、リフレクションを使用して LINQ メタデータの (手動) 設定をチェックする単体テストを作成することです。テストが失敗すると、説明的なエラー メッセージが表示され、列のプロパティを適切に変更するようユーザーに指示されます。これは完全な解決策ではなく、手動設定が多い場合は便利ではないかもしれませんが、自分自身とチームの大きな苦痛を回避するのに役立ちます.
列が DB から自動生成するように設定されていることを確認する nunit テストの例を次に示します。
[Test]
public void TestMetaData()
{
MyObj my_obj = new MyObj()
{
Foo = "bar",
};
Type type = MyObj.GetType();
PropertyInfo prop = type.GetProperty("UpdatedOn");
IEnumerable<ColumnAttribute> info = (IEnumerable<ColumnAttribute>)prop.GetCustomAttributes(typeof(ColumnAttribute), true);
Assert.IsTrue(
info.Any<ColumnAttribute>(x => x.IsDbGenerated == true),
"The DBML file needs to have MyObj.UpdatedOn AutoGenerated == true set. This must be done manually if the DBML for this table gets refreshed from the database."
);
}
PLINQO は、LINQ to SQL を生成する一連のコード生成テンプレートです。データベースとの同期、複数のクラスへのエンティティの分割、および LINQ to SQL を使いやすくする他の多くの機能がサポートされています。
http://www.plinqo.comの PLINQO サイトと紹介ビデオをチェックしてください。
これは、LINQ to SQL のベスト プラクティスに関する適切な情報を提供するリンクです。
http://www.a2zmenu.com/LINQ/LINQ%20to%20SQL%20Best%20Practice.aspx