Tôi muốn cung cấp chuỗi kết nối cho cơ sở dữ liệu của mình khi chạy. Tôi đang sử dụng khung Entity. Đây là những gì tôi có cho đến nayChuỗi kết nối thời gian chạy của khung thực thể
class MyClassDBContext:DbContext
{
public MyClassDBContext(string str) : base(str)
{
this.Database.Connection.ConnectionString = str;
}
}
Để sử dụng mã ở trên, tôi đã cố gắng
//create connection string
EntityConnectionStringBuilder myConn = new EntityConnectionStringBuilder();
myConn.Provider = "System.Data.SqlClient";
myConn.ProviderConnectionString = "user id=xxxx;password=xxxx;server=localhost;database=xxxx;connection timeout=30";
//inject the connection string at runtime
MyClassDBContext a = new MyClassDBContext(myConn.ToString())
Đoạn mã trên đã cho tôi một lỗi nói rằng "từ khóa Nhà cung cấp không được hỗ trợ". Để cố gỡ lỗi này, tôi đã thử như sau
MyClassDBContext a = new MyClassDBContext("metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provider=System.Data.SqlClient;provider connection string=user id=xxxx;password=xxxx;server=localhost;database=xxxx;connection timeout=30")
Bây giờ, tôi gặp lỗi "từ khóa siêu dữ liệu không được hỗ trợ". Vì vậy, tôi đã thay đổi mã của mình thành
MyClassDBContext a = new MyClassDBContext("provider=System.Data.SqlClient;provider connection string=user id=xxxx;password=xxxx;server=localhost;database=xxxx;connection timeout=30")
Bây giờ tôi gặp lỗi "từ khóa nhà cung cấp không được hỗ trợ". Vì vậy, tôi lại thay đổi mã của mình thành
MyClassDBContext a = new MyClassDBContext("user id=xxxx;password=xxxx;server=localhost;database=xxxx;connection timeout=30")
và giờ nó hoạt động !. Câu hỏi của tôi là: làm cách nào để chỉ định nhà cung cấp và siêu dữ liệu trong thời gian chạy? Có vẻ như chỉ chuỗi kết nối đang được chấp nhận. Tôi đang sử dụng thực thể 4.3.1 từ Nuget.
Cảm ơn
Vì vậy, tôi sẽ làm gì nếu tôi cần kết nối với Oracle hoặc MySQL bằng mã đầu tiên? –
Chuỗi kết nối EF có 'Nhà cung cấp =" System.Data.Entity "' và 'ConnectionString =" res: //big.csdl | res: //ball.ssdl | res: //mud.msl; nhà cung cấp kết nối chuỗi = " ... "'. Các chuỗi kết nối thông thường có các chi tiết 'Provider =" System.Data.Client "' (hoặc Oracle hoặc MySql) và 'ConnectionString =" để kết nối với nó "'. Hai tham số này thường có trong app.config hoặc web.config, nhưng bạn đang chọn tạo chúng theo cách động. Trong EF Code Đầu tiên, bạn lấy con đường thứ hai. Trong vùng đất EDMX, bạn phải nhúng chi tiết của đường dẫn thứ hai vào "Chuỗi kết nối nhà cung cấp" của đường dẫn đầu tiên. Nó xấu. – robrich