2016-07-27 3 views
1

Ich habe eine Idee für eine andere Datenebene. Ich möchte das Gleichgewicht zwischen verschiedenen SQL-Servern laden. Um dies zu tun habe ich folgendes Setup beachten:Abfangen und Bearbeiten von SQL-Nachrichten zwischen Entity Framework und SQL Server

enter image description here

Wenn die Webapplikation eine SQL-Anforderung der Fall ist, prüft die „Application Proxy“, wenn es sich um eine SELECT-Anweisung ist oder nicht. Wenn es eine SELECT-Anweisung ist, sendet der "Anwendungsproxy" die SELECT-Anweisung an 1 Server. Wenn es keine SELECT-Anweisung ist, sendet es die Anfrage an alle Server.

Jetzt weiß ich, die Idee in diesem Zustand wird nicht funktionieren und ich muss eine Menge verschiedener Probleme lösen, um es zum Laufen zu bringen (und ja, es gibt bereits Lösungen dafür). Aber das größte Startproblem ist derzeit die Integration mit Entity Framework.

Ich möchte einen DbContext in meiner eigenen Klasse wickeln, damit ich die Nachrichten abfangen und sie selbst senden kann. So etwas wie das:

public class MyDbContext : DbContext 
{ 
    public override string DoCallToServer(string sqlrequest) 
    { 
     if (sqlrequest.ToLower().StartsWith("select")) 
     { 
      return MyEngine.CallAll(sqlrequest); 
     } 
     else 
     { 
      return MyEngine.CallOne(sqlrequest); 
     } 
    } 
} 

Ist das möglich?

Ich habe das Internet gesucht, aber ich konnte nichts finden.

+0

https://msdn.microsoft.com/en-us/ Daten/dn469464.aspx? f = 255 & MSPPError = -2147217396 # BuildingBlocks –

+0

das ist ein sehr gutes Beispiel, aber ich denke, Sie brauchen mindestens EF 6 oder höher (ich bin nicht sicher, dass Sie es auschecken müssen!) http: // www. entityframeworktutorial.net/entityframework6/database-command-interception.aspx –

+0

@bassam, warum hast du das nicht als Antwort gepostet? Das war es, danke! – ikwillem

Antwort

Verwandte Themen