2011-12-28 34 views
23

Tôi muốn sử dụng chức năng ExecuteStoreQuery của Entity Framework và tôi đã tự hỏi rằng biến ngữ cảnh của tôi không có phương thức ExecuteStoreQuery.ExecuteStoreQuery với Dbcontext

Vì vậy, tôi phát hiện ra rằng đó là phương pháp của lớp ObjectContext, nhưng tôi đã sử dụng DbContext cho đơn đăng ký của mình. Tôi chỉ đơn giản là đã cố gắng thay đổi DbContext với ObjectContext, nhưng nó mang lại một số lỗi (ví dụ, trong ObjectContext không phải là phương pháp OnModelCreating).

Tôi làm cách nào để sử dụng ExecuteStoreQuery với DbContext và nếu không thể, có bất kỳ lựa chọn thay thế nào của ExecuteStoreQuery trong DbContext không?

Trả lời

37

A DbContext chỉ đơn giản là trình bao bọc xung quanh ObjectContext.

Bạn vẫn có thể truy cập vào gốc ObjectContext bằng cách sử dụng IObjectContextAdapter

(dbContext as IObjectContextAdapter).ObjectContext; 
+0

tôi sử dụng phương pháp này thành công trong ứng dụng của tôi. – Hammerstein

34

tôi muốn thêm rằng tôi nghĩ bây giờ là phương pháp đúng là:

dbContext.Database.SqlQuery<T>(string sql); 
+1

Nếu bạn muốn theo dõi thay đổi đối tượng trả về, bạn nên xem xét dbContext.tablename.SqlQuery (...) trong đó tablename là tên bộ sưu tập của bạn. (tức là một DbSet) –

Các vấn đề liên quan