2009-08-10 39 views
22

Trước hết, hãy để tôi nói rằng tôi rất mới đối với EF. Với điều đó đã nói, đây là tình trạng khó xử của tôi:Khung thực thể cho nhiều cơ sở dữ liệu (cùng một lược đồ) khi chạy?

Sẽ có một ứng dụng ASP.NET được di chuyển sang ASP.NET MVC. Tôi muốn sử dụng EF cho việc này. Có một cơ sở dữ liệu chính lưu trữ "thông tin khách hàng". Ngoài ra, mọi "khách hàng" đều có cơ sở dữ liệu riêng. Đây là những ràng buộc mà chúng ta có.

Hiện tại, thông tin khách hàng trong DB chính cho phép tôi tạo chuỗi kết nối cho mỗi khách hàng và thực hiện cuộc gọi SQL riêng lẻ.

Làm cách nào để thực hiện điều tương tự trong Khung thực thể? Mỗi cơ sở dữ liệu S have có cùng một lược đồ. Có cách nào để chuyển đổi chuỗi kết nối theo chương trình không? Các DB này hiện trên cùng một máy chủ, nhưng đó không phải là một yêu cầu và nó có thể là một máy chủ hoàn toàn khác.

Bất kỳ ý tưởng nào?

Nhiều chuỗi kết nối trong Web.config sẽ là phương sách cuối cùng. Thậm chí sau đó, tôi không chắc chắn làm thế nào chính xác để dây này lên.

Cảm ơn bạn trước.

Trả lời

5

Khi bạn xây dựng một bối cảnh dữ liệu, dưới đây là cách để lập trình thay đổi chuỗi kết nối trong thời gian chạy bằng cách sửa đổi Context.Connection tài sản:

//Get the connection string from app.config and assign it to sqlconnection string builder 
SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder(((EntityConnection)context.Connection).StoreConnection.ConnectionString); 
sb.IntegratedSecurity = false; 
sb.UserID ="User1"; 
sb.Password = "Password1"; 

//set the object context connection string back from string builder. This will assign modified connection string. 
((EntityConnection)context.Connection).StoreConnection.ConnectionString = sb.ConnectionString; 

Trích từ: http://sivapinnaka.spaces.live.com/blog/cns!B027EF7E7070AD69!211.entry

8

Nếu bạn làm việc thông qua một EntityConnection trong hàm tạo của đối tượng thực thể của bạn, bạn có thể thay đổi cơ sở dữ liệu khá dễ dàng.

EntityConnection con = new EntityConnection(connString); 
con.ChangeDatabase(dbName); 
using (Entities context = new Entities(con)) 
{ 
    // Some code here 
} 
2

Nếu số lượng khách hàng của bạn bị hạn chế và chuỗi kết nối hầu như không bao giờ thay đổi, một cách thanh lịch có thể là sử dụng ConfigurationManager.ConnectionStrings để truy xuất chuỗi kết nối cần thiết.

Giống như

string connectionString = ConfigurationManager.ConnectionStrings["Miller"].ConnectionString; 
return new Entities(connectionString); 

Xem thêm http://msdn.microsoft.com/en-us/library/ms254494.aspx

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