6

Şu an üzerinde çalıştığım bir projede yeni Elastic Scale teknolojisini uygulamakla meşgulüm. Bu teknoloji, yeni uygulama temeli tasarlarken sahip olduğumuz bazı karmaşık sorunları çözmek için görünüyor.Veritabanı bağlamında bir Elastik Ölçekli çoklu sorgu sorgusu yürütme

Şimdiye kadar, örnekler harika görünüyor ve bunu yeni oluşturulan DAL'de uygulamakla meşgulüm.

Uygulamamız için yalnızca Azure'daki Elastik Ölçek'e güvenemeyiz. Uygulama, aynı zamanda, tek bir örnek makinede de çalışabilmelidir. Bu nedenle, Elastic Scale ile de oldukça iyi çalışan veritabanını sorgulamak için aşağıdaki kodu oluşturdum.

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; 
} 

connectionInstance

biz OurDatabaseContext kullanabilirsiniz bir IDbConnection yaratacak IoC ile konfigüre edilir. Hepsi oldukça basit. Karşılaştığım ana konu, Elastic Scale tarafından sağlanan ve örneklerde uygulanan bir MultiShardConnection yapıyor.

Benim sorum şu ki, bir veritabanı bağlamında (LINQ2SQL (kullandığımız) veya EF) gibi bir MultiShardConnection kullanmak mümkündür.

Değilse, MultiShardConnection'u MultiShardCommand ile birlikte kullanmanın tek çözüm mü? Ya da böyle bir özellik ne zaman müsait olacak?

+0

Neden DsContext'de MultiShardConnection'ı kullanmaya çalışıyorsunuz? Bu makalede açıklanan yaklaşımı denediniz mi: http://azure.microsoft.com/en-us/documentation/articles/sql-database-elastic-scale-use-entity-framework-applications-visual-studio/ –

cevap

1

Şu anda bildiğim gibi bir dbContext ile çok yönlü bağlantı yapmak için önemsiz bir yol yoktur.

MultiShardConnection + MultiShardCommand kullanımı örneklerden oldukça dikkat çekicidir. Ancak, tüm yöntemler mevcut değildir (örneğin ReadAsync).

AMA, sanırım çoğu çok noktalı bağlantı sağ Sharding Key (eşleme anahtarı) kullanılarak atlanabilir. ShardMapManager'ım için bir tane daha sharding Key ekleyerek problemimi çözdüm. Eğer özel nedeninizi tanımlamak isterseniz, MultiShard Connection'a ihtiyacınız var ve mesajımı düzenleyin. Her zaman birden çok dbContexts oluşturma seçeneği vardır.