2012-04-14 19 views
19

Tôi đang sử dụng Khung thực thể trong trang web MVCSố lần trả về sử dụng truy vấn thô, sử dụng Khuôn khổ thực thể và MVC

Tôi đang cố gắng lấy số bản ghi bằng truy vấn thô.

Tôi đang tìm kiếm thứ gì đó dọc theo các dòng này nhưng mọi thứ sẽ hài lòng với bất kỳ giải pháp nào.

var sql = SELECT COUNT(*) FROM dbo.Articles WHERE (CategoryID = 3) 

var total = _context.Database.SOMETHING(sql) 

Tôi nhận ra rằng đối với một kịch bản đơn giản như vậy, một câu hỏi liệu có lẽ không phải là cách để đi, nhưng trong thực tế, chuỗi sql là phức tạp hơn nhiều vì thế nó là gần như không thể cho sử dụng LINQ to SQL.

+1

loại của '_context' là gì? 'DbContext',' DataContext', 'ObjectContext'? – nemesv

+0

@nemesv. Nó là một DbContext (xin lỗi, nó đã không nhận ra rằng Entity Framework có thể có những thứ khác nhau - tôi rõ ràng là mới cho trò chơi này). Không biết nó là DbContext có nghĩa là bạn có thể giúp tôi? –

Trả lời

37

Bạn có thể truy vấn execute raw SQL với mã EF đầu tiên với việc sử dụng các phương pháp SqlQuery:

var sql = "SELECT COUNT(*) FROM dbo.Articles WHERE (CategoryID = 3)"; 
var total = _context.Database.SqlQuery<int>(sql).First(); 
+6

Rực rỡ! Điều đó hoạt động hoàn hảo sau khi tôi thay đổi dòng cuối cùng thành var total = _context.Database.SqlQuery (sql) .single(); –

+0

Nhưng tôi phải sử dụng động như sau, var sql = "SELECT * FROM dbo.Articles"; dynamic total = _context.Database.SqlQuery (sql) .ToList(); ..... Điều này có thể không? –

+0

Cảm ơn bạn! giải quyết vấn đề của tôi quá! :) –

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