Tôi có một cơ sở dữ liệu SqlServer Compact Edition chứa 2 bảng.Tôi có thể có 2 ngữ cảnh EntityFramework khác nhau dùng chung một cơ sở dữ liệu SqlServer nhỏ gọn không?
Đối với mỗi bảng, tôi có một lớp ngữ cảnh bắt nguồn từ DbContext
được ứng dụng sử dụng để truy cập vào bảng.
Để giữ các thành phần khác nhau của ứng dụng được tách riêng, tôi không thể có một lớp ngữ cảnh có thuộc tính DbSet
cho cả hai bảng. Thay vào đó, tôi cần phải có 2 lớp ngữ cảnh khác nhau, mỗi người trong số họ phải hoàn toàn không biết gì về dữ liệu khác và dữ liệu của nó.
Tôi đang sử dụng cách tiếp cận mã đầu tiên, mã của tôi xác định các thực thể và mô hình, và tôi để Entity Framework tạo cơ sở dữ liệu cho tôi.
Vấn đề của tôi là: làm thế nào tôi có thể để Entity Framework tạo cơ sở dữ liệu và các bảng cho tôi tự động khởi tạo ngữ cảnh, nhưng vẫn có 2 bối cảnh chia sẻ cùng cơ sở dữ liệu và kết nối?
Ngay bây giờ những gì tôi nhận được là, bối cảnh đầu tiên tạo thành công các cơ sở dữ liệu và bảng trong nó, nhưng khi tôi cố gắng tạo ra bối cảnh thứ hai, tôi nhận được, gì ngạc nhiên các lỗi sau:
The model backing the 'SomeObjectContext' context has changed since the database
was created. Either manually delete/update the database, or call Database.SetInitializer
with an IDatabaseInitializer instance. For example, the DropCreateDatabaseIfModelChanges
strategy will automatically delete and recreate the database, and optionally seed it with
new data.
Không ai trong số IDatabaseInitializer
có sẵn phù hợp với tôi, bởi vì tôi không muốn toàn bộ cơ sở dữ liệu bị xóa khi bối cảnh thứ hai được tạo ra. Tôi chỉ muốn bảng của bối cảnh thứ hai được tạo ra trong cơ sở dữ liệu hiện có.
Bất kỳ lời khuyên nào về cách giải quyết vấn đề này sẽ được đánh giá cao.
Cảm ơn
Nó được vấn đề trong môi trường như Sql Azure, nơi bạn bị tính phí cho mỗi cơ sở dữ liệu ... – Clement