2011-01-04 6 views
0

私は、アプリケーション内でline \ dynamic sqlではなくlinqをSQL(またはEF)に使用していましたが、考えられる問題が発生しました。私のアプリケーションは、いくつかのSQLインスタンスにわたって任意の数のランダムなデータベースに対してデータを変更しますが、linqは単一のデータベースシナリオに向けて構造化されているようです。それはラインSQLで使用し続けるのが最善でしょうか、それとも1つのデータベースに束縛することなくlinqを使用する方法がありますか?insert update deletesを実行中 - Linqを使用しますか?

私は、現時点ではやっているものの例:

クエリの
Using cn As SqlConnection = (ConnectionString) 
     Using cm As SqlCommand = New SqlCommand("< Dynamic sql>;", cn) 
      cn.Open() 
      cn.ChangeDatabase(Database) 
      cm.ExecuteNonQuery() 
     End Using 
End Using 

そして例は次のようになります。

DELETE FROM settings WHERE [Sec] = 'ON' AND [Key] = 'last'; INSERT Settings([Sec], [Key], [Val]) values('ON', 'last', GETDATE()); 

私は、これらのデータベース内のストアドプロシージャを実行しておりますが、いくつかのカスタム、ユーザーを追加するためのその他のもの(sp_adduser)

すべてのターゲットデータベースは同じ構造をしているので、どのクエリも\ linqで動作します。

答えて

1

LINQでは、DataContextが単一のデータベースに移動するという点では正しいですが、それぞれ異なるデータベースに移動する多くのDataContextを持つことができます。たとえば、SettingsDataContextを設定してデータベースに送り、UsersDataContextをユーザーと一緒にデータベースに送ることもできますが、設定しておくこともできます。

すべての構文があります。ここでは、ADO.NETとLinq to SQLの挿入と選択を行ういくつかの例へのリンクを示します。私はよく聞いたことがある

http://blogs.msdn.com/b/wriju/archive/2008/07/14/linq-to-sql-vs-ado-net-a-comparison.aspx

ことの一つは、LINQ to SQLのは、ちょうど持つよりも、C#またはVB.NETコードよりの王国で働きたいSQLや人に慣れて本物でないもののためであるということです思考パターンを切り替え、ADO.NET/inline SQL領域で考えることができます。

+0

Hi Seeker - ターゲットデータベースは、静的ではなく、複数の人によって毎日復元されます。 (これらのデータベースは削除されるまで数時間働いています)。その場でデータベースごとにDataContextを作成する必要がありますか? – madlan

+0

データベースの構造が同じで、データベースの接続文字列が同じであれば、それはうまくいくはずです。構造によって、テーブル名、テーブルの列、列のデータ型、ストアドプロシージャ名、そして私が忘れていると思われるものがあります。データベースの復元は問題ではありません。 – seekerOfKnowledge

関連する問題