Tôi hy vọng ai đó có thể giúp tôi, bởi vì có vẻ như tôi hoàn toàn bị mắc kẹt.Mã khuôn khổ thực thể Đầu tiên không có app.config
Đối với các dự án sắp tới trong công ty chúng tôi, chúng tôi muốn sử dụng Entity Framework 5 với phương pháp tiếp cận mã đầu tiên. Tôi chơi xung quanh một chút và mỗi khi tôi cố gắng sử dụng EF với các thư viện hiện có của chúng tôi, tôi thất bại vì có vẻ như EF phụ thuộc rất nhiều vào app.config hiện có.
Trong công ty chúng tôi có thư viện cơ sở dữ liệu cho phép chúng tôi kết nối với các nguồn dữ liệu và công nghệ cơ sở dữ liệu khác nhau tận dụng lợi thế của MEF (khung mở rộng được quản lý) cho các nhà cung cấp cơ sở dữ liệu. Tôi chỉ cần vượt qua một số cài đặt cơ sở dữ liệu, chẳng hạn như máy chủ (hoặc tệp), danh mục, thông tin người dùng và tên nhà cung cấp cơ sở dữ liệu, thư viện tìm plugin thích hợp và trả về cho tôi chuỗi kết nối tùy chỉnh hoặc IDbConnection. Chúng tôi muốn sử dụng thư viện này cùng với EF vì nó cho phép chúng tôi linh hoạt về cơ sở dữ liệu nào chúng tôi sử dụng cũng thay đổi cơ sở dữ liệu trong thời gian chạy.
So. Tôi thấy rằng một đối tượng DbContext điển hình không có tham số nào trong hàm tạo. Nó sẽ tự động tìm chuỗi kết nối thích hợp trong app.config. Chúng tôi không thích những thứ như vậy vì vậy tôi đã thay đổi constructor mặc định để có một đối tượng DbConnection được truyền cho lớp cơ sở DbContext. Không thỏa thuận.
Sự cố xảy ra khi mô hình mã đầu tiên thay đổi. EF tự động thông báo điều này và tìm kiếm các lớp/cấu hình di chuyển. Nhưng: Một lớp chuyển đổi điển hình yêu cầu một hàm tạo parameterless mặc định cho ngữ cảnh! Thật đáng tiếc!
Vì vậy, chúng tôi tạo lớp di chuyển của riêng mình bằng giao diện IDbContextFactory. Nhưng một lần nữa, có vẻ như cũng IDbContextFactory này cần một constructor parameterless, nếu không tôi không thể thêm di chuyển hoặc cập nhật cơ sở dữ liệu.
Hơn nữa, tôi đã tạo trình cấu hình di chuyển dữ liệu của riêng mình, trong đó tôi chuyển ngữ cảnh, cũng là cơ sở dữ liệu đích. Vấn đề là ở đây: Nó không tìm thấy bất kỳ lớp học di trú, không có vấn đề gì tôi cố gắng.
Tôi hoàn toàn bị kẹt vì dường như cách duy nhất để sử dụng EF là khi các chuỗi kết nối được lưu trong app.config. Và điều này là ngu ngốc vì chúng ta cần phải thay đổi các kết nối cơ sở dữ liệu trong thời gian chạy, và app.config là chỉ đọc cho người dùng mặc định!
Cách giải quyết vấn đề này?
Nếu bạn không vượt qua trong chuỗi kết nối thì nó phải đọc nó từ app.config? Nếu không, làm thế nào nó có thể tìm thấy nó? –