2012-08-07 37 views
15

Nếu bạn đang sử dụng mô hình dữ liệu contex đối tượng (với tệp EDMX), trong quá trình tạo, bạn có thể muốn chỉ định chuỗi kết nối bên trong tệp cấu hình của mình.Chuỗi kết nối nhà cung cấp từ Entity Framework

Chuỗi kết nối không may là chuỗi kết nối chung vì nó chứa một số ... những thứ cần thiết cho các kết nối thực thể. Ví dụ với kết nối MySql:

<add name="MyDbEntities" connectionString="metadata=res://*/Namespace.MyDb.csdl|res://*/Namespace.MyDb.ssdl|res://*/Namespace.MyDb.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=172.17.17.154;User Id=user;password=password;Persist Security Info=True;database=MyDatabase;Convert Zero Datetime=true&quot;" providerName="System.Data.EntityClient" /> 

Vấn đề tôi có là chuỗi kết nối này chứa chuỗi kết nối của nhà cung cấp trong tham số "chuỗi kết nối nhà cung cấp".

Vì một lý do cụ thể, tôi cần phải tạo một MySqlConnection mới, không liên quan đến mô hình thực thể. Để tạo MySqlConnection, tôi cần cung cấp chuỗi kết nối mysql - đó là chuỗi kết nối nhà cung cấp cho mô hình thực thể và tôi biết chuỗi kết nối mà tôi cần luôn là chuỗi kết nối giống nhau cho mô hình thực thể.

Nhưng làm cách nào để nhận chuỗi kết nối nhà cung cấp chương trình? Tôi đã bị mắc kẹt với trình duyệt dụ mô hình không thành công ...

Sau đây:

ModelInstance.Connection.ConnectionString 

chứa một cái gì đó như "name = TestBotEntities", thậm chí không cả chuỗi kết nối. Vì vậy, tôi đã thử:

ConfigurationManager.ConnectionStrings["MyDbEntities"].ConnectionString 

nhưng có chứa chuỗi kết nối toàn bộ thực thể và tôi không biết cách phân tích cú pháp, cách chỉ nhận chuỗi kết nối nhà cung cấp.

Trả lời

33

Hóa ra có hai cách.

tôi có thể phân tích các chuỗi kết nối thực thể thông qua EntityConnectionStringBuilder:

string entityConnectionString = ConfigurationManager.ConnectionStrings["MyDbEntities"].ConnectionString; 
string providerConnectionString = new EntityConnectionStringBuilder(entityConnectionString).ProviderConnectionString; 

... hoặc nếu tôi có trường hợp mô hình cụ thể có sẵn, tôi có thể lấy nó từ đây.

((System.Data.EntityClient.EntityConnection)ModelInstance.Connection).StoreConnection.ConnectionString; 
Các vấn đề liên quan