2013-07-08 37 views
5

Tôi cần sử dụng nhiều chuỗi kết nối trong ứng dụng ASP.NET MVC của mình. Làm thế nào tôi có thể làm điều đó? Bây giờ tôi đang đăng ký kết nối như sau:ASP.NET MVC. Autofac và nhiều chuỗi kết nối

builder.RegisterType<SqlConnection>().WithParameter(
    "connectionString", 
    WebConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString) 
    .InstancePerLifetimeScope() 
    .ExternallyOwned(); 

builder.Register(c => new ContextDataContext(c.Resolve<SqlConnection>())).InstancePerDependency(); 

Trả lời

3

Bạn có thể đăng ký nhiều trường hợp của một loại nhất định theo tên:

Từ Autofac hướng dẫn:

builder.Register<OnlineState>().Named<IDeviceState>("online"); 

Để lấy một dịch vụ có tên, phương pháp này ResolveNamed() là sử dụng:

var r = container.ResolveNamed<IDeviceState>("online"); 

http://autofac.readthedocs.org/en/latest/advanced/keyed-services.html

+0

Cảm ơn bạn. Bạn đã cho tôi điểm vào, và tôi quyết định sử dụng phương pháp Keyed. – alexmac

0

Một cách để thực hiện, là tạo nhà máy kết nối của riêng bạn và đăng ký với autofac. Cái gì như:

interface IConnectionFactory{ 
    SqlConnection CreateConnection(string connectionStringName); 
} 
+0

Làm cách nào để trợ giúp sử dụng nhiều chuỗi kết nối? Sử dụng một nhà máy có ý nghĩa khi có nhu cầu khởi tạo tùy chỉnh các thành phần trước khi sử dụng nó. Nó không phải là câu trả lời cho câu hỏi cốt lõi ngay cả khi nó hữu ích. (hoặc tôi không thấy cách bạn dự định sử dụng nó) – kubal5003

+0

@ kubal5003, nhà máy của anh ấy sẽ tạo kết nối với chuỗi kết nối được chỉ định, dựa trên tên của nó, vì vậy mã của anh ấy có thể gọi phương thức này để nhận kết nối cần thiết. – alex

-2

Bạn có thể xác định nhiều chuỗi kết nối trong phần trong web.config

<connectionStrings> 

    <add name="ProductConnection" providerName="System.Data.SqlClient" connectionString="_YOUR_CONNECTION_STRING_1_"/> 

    <add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="_YOUR_CONNECTION_STRING_2_"/> 

</connectionStrings> 

Trong mã của bạn, bạn có thể sử dụng như thế nào,

ConfigurationManager.ConnectionStrings["ProductConnection"] để có được những chuỗi kết nối.

Trong trường hợp bạn muốn nhận một phiên bản dựa trên chuỗi kết nối, bạn có thể sử dụng bất kỳ nhà máy nào có thể giải quyết cá thể của bạn dựa trên tên chuỗi kết nối. SimpleFactory + Unity hoặc SimpleFactory + Autofac có thể giúp bạn trong việc này.

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