私は、アプリケーション内で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で動作します。
Hi Seeker - ターゲットデータベースは、静的ではなく、複数の人によって毎日復元されます。 (これらのデータベースは削除されるまで数時間働いています)。その場でデータベースごとにDataContextを作成する必要がありますか? – madlan
データベースの構造が同じで、データベースの接続文字列が同じであれば、それはうまくいくはずです。構造によって、テーブル名、テーブルの列、列のデータ型、ストアドプロシージャ名、そして私が忘れていると思われるものがあります。データベースの復元は問題ではありません。 – seekerOfKnowledge