Đúng. Vấn đề là chỉ sử dụng cơ sở dữ liệu thực cho các bài kiểm tra tích hợp không phải thực hiện thường xuyên và toàn bộ bộ bài kiểm tra tích hợp thường chỉ được thực thi trên máy chủ xây dựng.
Điều này là do khởi chạy EF chậm khi thử nghiệm đơn vị (bạn có thể thử chuyển sang x86). Thời gian cũng được sử dụng bởi quá trình tạo lượt xem. Lượt xem có thể được tạo trước Điều này thường được thực hiện để giảm việc khởi động và khởi tạo hệ thống thực nhưng trong trường hợp tăng tốc các bài kiểm tra đơn vị bằng cách sử dụng chế độ xem trước sẽ không giúp ích quá nhiều vì bạn sẽ chỉ chuyển thời gian từ kiểm tra sang xây dựng.
Đi vòng quanh chỉ có nghĩa là sử dụng tập lệnh SQL cũ thuần túy. Thời gian bổ sung cần thiết cho hoạt động này có thể được dành để tạo SQL đó. Tôi nghĩ rằng SQL không được lưu trong bộ nhớ cache vì việc thực thi ứng dụng thông thường thường không cần nó nhiều lần nhưng bạn có thể yêu cầu EF cung cấp cho bạn nếu không phần quan trọng nhất của SQL đó, hãy lưu vào bộ nhớ cache ở đâu đó và tự thực thi nó bất cứ khi nào bạn cần. . EF có thể cung cấp cho bạn SQL cho các bảng và ràng buộc:
var dbSql = ((IObjectContextAdapter) context).ObjectContext.CreateDatabaseScript();
Bạn chỉ cần có SQL nhỏ của riêng mình để tạo cơ sở dữ liệu và sử dụng chúng cùng nhau. Ngay cả những thứ như tập lệnh sau cũng đủ:
CREATE DATABASE YourDatabaseName
USE YourDatabaseName
Trước tiên, bạn cũng phải tắt tạo cơ sở dữ liệu trong mã để làm cho việc này hoạt động và kiểm soát quá trình:
Database.SetInitializer<YourContextType>(null);
Khi thực hiện SQL tạo cơ sở dữ liệu, bạn sẽ cần chuỗi kết nối riêng trỏ đến Master
cơ sở dữ liệu.