0

私は 2 つのデータベースを持っています: - 開発データベース (テスト & 開発用) - 本番データベース (最新リリースで使用)

VS2010 デザイナーを使用して、DEV データベースを Linq に正常に接続できます (関心のあるテーブルをドラッグ アンド ドロップすると、残りが生成されます)。これにより dev.dbml が作成され、そこから DataContext から派生するクラスをインスタンス化することができます。これにより、美しく厳密に型指定された Linq 容量が無料で得られます。これにより、静的コードを記述するためのデータベースの変更が反映されます。

私のプログラムは、文字列引数「dev」または「prod」を取る .exe です。それぞれ、Linq の強力なタイピングと自動生成の利点を失うことなく、「dev」または「prod」データベースを透過的に使用したいと考えています。さらに重要なことは、コードがデータベース ジェネリックである必要があることです。

  1. おそらく 1 つの解決策は、dev.dbml で宣言された設定を何らかの方法で使用することですが、データ ソースに柔軟性を導入することです。これにより "prod" で障害が発生する可能性があることは理解しています (つまり、"dev" に存在するテーブルは "prod" にはありません)。 .

  2. 私が掘り下げていた別の解決策は、DataContextのラッパーを書くことでしたが、それではデータベースから手動でエンティティをコードに複製する必要がありました. -linq-to-sql-datacontext.aspx

  3. 私が見る他の解決策は、それぞれのデータベースに dev.dbml と prod.dbml をマッピングすることですが、次に、汎用コードの可能性を提供する方法は?

これをどのようにハックしますか?

4

1 に答える 1

1

LINQ-to-SQL は、その接続文字列をアプリケーション構成ファイルに格納します。これは、既定のコンストラクターによって使用されるものです。独自の接続文字列を渡すことができるコンストラクターを提供する必要があります。それを使用して、接続するデータベースに実行時に接続文字列を渡します。

もちろん、これには、接続先のデータベースが、設計対象と同じテーブル、列などを持っている必要があります。

于 2012-04-25T16:44:24.773 に答える