私は別のデータレイヤーを考えています。私は異なるSQLサーバー間の負荷を分散したい。それがSELECT文であるかどうwebアプリケーションは、SQL要求、「アプリケーションプロキシ」のチェックを行いEntity FrameworkとSQL Serverの間でSQLメッセージをインターセプトして操作する
:そうするために、私は心の中で次のセットアップを持っています。 SELECT文の場合、「アプリケーションプロキシ」はSELECT文を1つのサーバに送信します。 SELECTステートメントでないときは、すべてのサーバーに要求を送信します。
私はこの状態でのアイデアがうまくいかないことを知っています。これを実現するには、さまざまな問題を解決する必要があります。しかし、今のところ最大のスタートアップ問題は、Entity Frameworkとの統合です。
自分のクラスにDbContextをラップして、メッセージを傍受して自分自身で送信できるようにします。だからこのようなもの:
public class MyDbContext : DbContext
{
public override string DoCallToServer(string sqlrequest)
{
if (sqlrequest.ToLower().StartsWith("select"))
{
return MyEngine.CallAll(sqlrequest);
}
else
{
return MyEngine.CallOne(sqlrequest);
}
}
}
これは可能ですか?
私はインターネットを検索しましたが、何も見つかりませんでした。ここで
https://msdn.microsoft.com/en-us/ data/dn469464.aspx?f = 255&MSPPError = -2147217396#BuildingBlocks –
これは非常に良い例ですが、少なくともEF 6以降が必要です(確認する必要はありません)。http:// www。 entityframeworktutorial.net/entityframework6/database-command-interception.aspx –
@bassam、なぜ答えとして投稿しませんでしたか?それだった、ありがとう! – ikwillem