6

Ich bin gerade dabei, die neue Elastic Scale-Technologie in einem Projekt zu implementieren, an dem ich gerade arbeite. Diese Technologie scheint einige komplexe Probleme zu lösen, die wir bei der Entwicklung der neuen Anwendungsgrundlage hatten.Ausführen einer Elastic Scale-Multi-Shard-Abfrage im Datenbankkontext

Bisher sehen die Beispiele gut aus und ich bin damit beschäftigt, dies in unserem neu erstellten DAL zu implementieren.

Für unsere Anwendung können wir uns nicht ausschließlich auf Elastic Scale in Azure verlassen. Die Anwendung muss in der Lage sein, auf einem einzelnen Instance-Rechner auch lokal ausgeführt zu werden. Daher habe ich den folgenden Code erstellt, um die Datenbank abzufragen, die ziemlich gut funktioniert, auch mit Elastic Scale.

public IEnumerable<AnEntity> All() 
{ 
    var dbConnection = GetConnection(); 
    using (var context = new OurDatabaseContext(dbConnection)) 
    { 
     var theEntities = context.EntityTable; 
     return theEntities.ToArray(); 
    } 
} 
private IDbConnection GetConnection() 
{ 
    var connectionInstance = connection[ConnectionStringNames.TheDatabase]; 
    var dbConnection = connectionInstance.Create(); 
    return dbConnection; 
} 

Die connectionInstance über IoC konfiguriert, die eine IDbConnection schaffen, die wir im OurDatabaseContext verwenden können. Alles ziemlich einfach.

Das Hauptproblem, mit dem ich konfrontiert bin, ist ein MultiShardConnection, von Elastic Scale zur Verfügung gestellt und in den Beispielen implementiert.

Also meine Frage ist, ist es möglich, eine MultiShardConnection mit einem Datenbankkontext (wie die von LINQ2SQL (die wir verwenden) oder EF) zu verwenden.

Wenn nicht, ist die einzige Lösung, die MultiShardConnection in Kombination mit der MultiShardCommand zu verwenden? Oder wann wird eine solche Funktion verfügbar sein?

+0

Warum versuchen Sie, MultiShardConnection im DbContext zu verwenden? Haben Sie den in diesem Artikel beschriebenen Ansatz versucht - http://azure.microsoft.com/en-us/documentation/articles/sql-database-elastic-scale-use-entity-framework-applications-visual-studio/ –

Antwort

1

Wie ich derzeit weiß, gibt es keine triviale Möglichkeit, eine Multi-Hard-Verbindung mit einem dbContext herzustellen.

Verwenden von MultiShardConnection + MultiShardCommand ist ziemlich geradlinig aus den Beispielen. Es sind jedoch nicht alle Methoden verfügbar (zB ReadAsync).

ABER, ich denke, dass die meisten Multi-Hard-Verbindungen mit dem richtigen Sharding Key (Mapping-Taste) umgangen werden können. Ich habe mein Problem gelöst, indem ich einen weiteren Sharing Key zu meinem ShardMapManager hinzugefügt habe. Wenn Sie Ihren spezifischen Grund beschreiben möchten, benötigen Sie MultiShard Connection und meinen Beitrag bearbeiten. Es gibt immer die Option, mehrere dbContexts zu erstellen.

Verwandte Themen