6

Tôi đang bận triển khai kỹ thuật quy mô đàn hồi mới trong dự án mà tôi đang làm việc vào lúc này. Công nghệ này dường như giải quyết một số vấn đề phức tạp mà chúng tôi gặp phải khi thiết kế nền tảng ứng dụng mới.Thực hiện truy vấn phân chia theo thang tỷ lệ co giãn trên ngữ cảnh cơ sở dữ liệu

Cho đến nay, các ví dụ trông tuyệt vời và tôi đang bận triển khai điều này trong DAL mới được tạo của chúng tôi.

Đối với ứng dụng của chúng tôi, chúng tôi không thể chỉ dựa vào Thang đo đàn hồi trong Azure. Ứng dụng này phải có khả năng chạy trên một máy ví dụ đơn lẻ, tại chỗ, cũng vậy. Vì vậy, tôi đã tạo mã sau đây để truy vấn cơ sở dữ liệu hoạt động khá tốt, cũng với Quy mô Đàn hồi.

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

Các connectionInstance được cấu hình thông qua IoC mà sẽ tạo ra một IDbConnection mà chúng tôi có thể sử dụng trong OurDatabaseContext. Tất cả khá đơn giản.

Vấn đề chính tôi đang gặp phải là thực hiện MultiShardConnection, do Quy mô đàn hồi cung cấp và được triển khai trong các ví dụ.

Vì vậy, câu hỏi của tôi là, có thể sử dụng MultiShardConnection với ngữ cảnh cơ sở dữ liệu (giống như của LINQ2SQL (mà chúng tôi đang sử dụng) hoặc EF).

Nếu không, là giải pháp duy nhất để sử dụng MultiShardConnection kết hợp với MultiShardCommand? Hoặc khi nào một tính năng trở nên khả dụng?

+0

Tại sao bạn đang cố gắng sử dụng MultiShardConnection trong DbContext? Bạn đã thử cách tiếp cận được mô tả trong bài viết này - http://azure.microsoft.com/en-us/documentation/articles/sql-database-elastic-scale-use-entity-framework-applications-visual-studio/ –

Trả lời

1

Như tôi hiện đang biết không có cách tầm thường nào để tạo kết nối đa kết nối với dbContext.

Sử dụng kết nối MultiShardConnection + MultiShardCommand khá dễ hiểu từ các ví dụ. Tuy nhiên không có tất cả các phương thức có sẵn (ví dụ như ReadAsync).

NHƯNG, tôi nghĩ rằng hầu hết các kết nối multishard có thể được bỏ qua bằng cách sử dụng phím Sharding phải (phím ánh xạ). Tôi đã giải quyết được vấn đề của mình bằng cách thêm một khóa Sharding nữa vào ShardMapManager của mình. Nếu bạn muốn mô tả lý do cụ thể của bạn, bạn cần kết nối MultiShard và sửa chữa bài viết của tôi. Luôn có tùy chọn để tạo nhiều dbContexts.

Các vấn đề liên quan