33

Ok, tôi muốn tạo lại một dự án mà tôi đã tạo bằng EF 4.1 đến EF 5.0, đủ đơn giản hoặc ít nhất tôi nghĩ. Một trong những điều trong dự án cũ của tôi là tôi đã có thể thay đổi chuỗi kết nối cơ sở dữ liệu khi chạy ở EF 4.1:EF 5 Thay đổi chuỗi kết nối tại thời điểm

using (var myContext = new MyEntities(ConnectionString)) 
{ 

} 

Dễ dàng peasy nhưng trong EF 5.0 bạn phải làm điều này khác nhau:

string connectionString = "data source=LocalHost;initial catalog=MyDatabase;user id=MyUserName;password=MyPassword;multipleactiveresultsets=True;App=EntityFramework"; 

using (var myContext = new MyEntities()) 
{ 
     myContext.Database.Connection.ConnectionString = connectionString; 
} 

Bây giờ, điều này đã cho tôi một phần tốt hơn trong hai giờ để tìm ra, vì vậy tôi đoán câu hỏi của tôi là điều này đúng cách để thay đổi chuỗi kết nối trong thời gian chạy hay không? Nếu đó là lý do tại sao họ thực hiện thay đổi này?

Tôi đã tìm thấy điều này Link nhưng nó không hoạt động. Tôi đã nhận được lỗi chi tiết trong phần bình luận đầu tiên của câu trả lời đầu tiên của Ladislav Mrnka. Sau này tôi tìm thấy điều này Link mà dường như làm việc tốt.

CẬP NHẬT

Tôi đọc lại first link tôi được đăng và tôi tìm thấy một giải pháp khác, tôi chỉ đơn giản là tạo ra một lớp học phần:

public partial class MyEntities : DbContext 
{ 
    public MyEntities(string connectionString) : base(connectionString) 
    { 
      Database.Connection.ConnectionString = connectionString; 
    } 
} 
+15

Bạn nên viết bản chỉnh sửa của mình làm câu trả lời và chấp nhận ... – SRKX

+0

Trong câu trả lời của bạn, dòng 'Database.Connection .ConnectionString = connectionString; 'là thừa, bởi vì hoạt động đó đã được thực hiện bởi hàm tạo cơ sở. –

Trả lời

6

Sử dụng quá tải nhà xây dựng bối cảnh đó lấy chuỗi kết nối như một tham số .