Tôi đã chuyển DAL sang sử dụng LINQ to Entity Framework. Vì ứng dụng của tôi kết nối với các cơ sở dữ liệu khác nhau tùy thuộc vào người dùng hiện tại, tôi cần phải tạo động DataContext tại thời gian chạy và chuyển vào chuỗi kết nối thích hợp. Tuy nhiên, khi tôi cố gắng tạo một kết nối Entity Framework bằng cách sử dụng chuỗi kết nối cũ của tôi, kết nối không thành công. Nó phàn nàn rằng nó không nhận ra chìa khóa trong chuỗi kết nối, "máy chủ" là chính xác.Tại sao kết nối khung thực thể yêu cầu thuộc tính siêu dữ liệu?
tôi phát hiện ra rằng tôi cần phải làm điều này để có được kết nối Entity Framework để làm việc:
EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
entityBuilder.Provider = "System.Data.SqlClient";
entityBuilder.ProviderConnectionString = clientConnectionString;
entityBuilder.Metadata = "res://*/xxxxxxxxxx.csdl...";
Entities entities = new Entities(entityBuilder.ToString());
Tại sao điều này?
Thuộc tính Siêu dữ liệu là gì?
Nó sẽ là một vấn đề mà nó luôn luôn giống nhau cho nhiều kết nối khác nhau?
Nó nên là gì?
Có cách nào xung quanh vấn đề này không?
Cảm ơn trước!
Cập nhật 1: Cảm ơn bạn đã cập nhật Randolpho, nhưng ...
Lý do tôi gặp sự cố này là tôi không thể lưu trữ chuỗi kết nối trong tệp cấu hình. Chuỗi kết nối được xác định động trong thời gian chạy mà người dùng đang kết nối.
Đây là kịch bản chính xác của tôi:
Nếu người dùng A được kết nối, ứng dụng kéo dữ liệu từ cơ sở dữ liệu A. Nếu người dùng B được kết nối, ứng dụng kéo dữ liệu từ cơ sở dữ liệu B.
Các chuỗi kết nối được lưu trữ trong một chính cơ sở dữ liệu và số lượng có khả năng vô hạn. Mỗi khi tôi thêm một người dùng, tôi không muốn phải đi vào web.config, chưa kể thực tế rằng nó cuối cùng sẽ nhận được HUGE!
Vì ánh xạ giống nhau đối với mỗi kết nối và nó sẽ không thay đổi, nên tôi không sử dụng cùng một Siêu dữ liệu cho tất cả chúng phải không? –
vâng, đúng là – user230910