Linq to SQL Dbml ファイルを管理するためのベスト プラクティス?

StackOverflow https://stackoverflow.com/questions/33664

  •  09-06-2019
  •  | 
  •  

質問

私は Linq to SQL を使い始めたばかりですが、dbml ファイルの管理に関して共有できるベスト プラクティスを持っている人がいるかどうか疑問に思っています。

  • データベースを常に最新の状態に保つにはどうすればよいでしょうか?
  • データベース全体に対して 1 つの dbml ファイルがありますか、それとも複数の論理ユニットに分割されていますか?
  • チーム環境ではこのファイルの管理はどのように機能しますか?

その他のヒントやコツは大歓迎です。

役に立ちましたか?

解決

見ましたか Sqlメタル?公式にサポートされていますが、あまり宣伝されていません。これを使用して、コマンドラインから dbml を構築できます。これをデータベースの継続的な統合更新の一部として使用しました (ただし、これを行う場合は、コード分離が本当に適切であることを確認してください。部分クラスは救世主です。dbml が取得するため)上書きされます)。

私の記憶が正しければ、Visual Studio のモデル デザイナーと全く同じ機能はありません (複数形化の処理方法が異なると思います)。そこには Ben Hall のブログにそれに関する良い投稿があります.

他のヒント

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 を使いやすくする多くの機能がサポートされています。

PLINQO サイトをチェックしてください。 http://www.plinqo.com 紹介ビデオも同様に。

LINQ to SQL のベスト プラクティスに関する有益な情報を提供するリンクは次のとおりです。

http://www.a2zmenu.com/LINQ/LINQ%20to%20SQL%20Best%20Practice.aspx

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top