Tôi đang làm việc trên một ứng dụng sẽ sử dụng cùng một lược đồ cơ sở dữ liệu trên nhiều cơ sở dữ liệu. Vì lý do này, tôi đã tạo một cơ sở dữ liệu có tên là MyTemplate
. Khi một người dùng mới được tạo, họ sẽ có thể hiện riêng của họ về cơ sở dữ liệu. Vì vậy, một cơ sở dữ liệu được gọi là một cái gì đó như MyTemplate_[UserName]
sẽ được tạo ra. Khi người dùng đăng nhập, tôi cần phải trỏ truy vấn của họ đến cơ sở dữ liệu của họ. Vì lý do này, tôi biết rằng tôi cần thiết lập chuỗi kết nối khi chạy. Vấn đề của tôi là, tôi cũng muốn sử dụng khung Entity.Thiết lập khung thực thể cho chuỗi kết nối động
Hiện tại, tôi đã tạo một .edmx mới bằng MyTemplate làm nguồn. Tôi nghĩ rằng tôi sẽ có thể cập nhật mã và thiết lập chuỗi kết nối ở đó. Thật không may, tôi không thể tìm ra cách để thiết lập nó. Hàm khởi tạo cho TemplateEntities không có quá tải cho phép tôi truyền vào chuỗi kết nối. Tôi nhận thấy rằng TemplateEntities bắt nguồn từ DbContext, tôi không nghĩ rằng đây sẽ là vấn đề.
string connectionString = GetUsersConnectionString();
using (TemplateEntities entities = new TemplateEntities())
{
TemplateEntity entity = new TemplateEntity();
// Save to the database
entities.TemplateEntity.Add(entity);
entities.SaveChanges();
}
Tôi có đang tạo .edmx
không chính xác không? Hoặc tôi thiếu một cái gì đó hoàn toàn? Tất cả mọi thứ tôi Google cho thấy một quá tải mà nên cho phép một chuỗi kết nối được thông qua. Tuy nhiên, tôi không có quá tải có sẵn.
Khi tôi làm điều này, tôi nhận được lỗi có nội dung: 'đối tượng' không chứa hàm tạo có 1 đối số. Tôi đang làm gì sai? – user70192
Định nghĩa lớp một phần với hàm tạo mới phải nằm trong cùng một không gian tên như lớp được tạo ra - nếu không nó sẽ khai báo một lớp mới (mặc định xuất phát từ 'đối tượng') –
+1: Tôi thắc mắc vì sao loại hàm dựng này là không có trong mẫu mặc định, nhưng đây là một giải pháp tốt đẹp và sạch sẽ, thx. – reSPAWNed