2012-04-14 28 views
19

używam Entity Framework w witrynie MVCPowrót użyciu kwerendy surowego, przy użyciu Entity Framework i MVC

Próbuję uzyskać tylko liczbę rekordów, stosując surowe zapytania.

Szukam czegoś podobnego, ale każdy będzie zadowolony z jakiegokolwiek rozwiązania.

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

var total = _context.Database.SOMETHING(sql) 

Zdaję sobie sprawę, że dla takiego prostego scenariusza, surowy zapytanie nie jest chyba do zrobienia, ale w rzeczywistości, sql ciąg jest znacznie bardziej skomplikowana, więc jest to prawie niemożliwe, aby użyć LINQ do SQL.

+1

Jaki jest typ '_context'? 'DbContext',' DataContext', 'ObjectContext'? – nemesv

+0

@ saturesv. Jest to DbContext (przepraszam, nie zdawałem sobie sprawy, że Entity Framework może mieć różne rzeczy - jestem oczywiście nowy w tej grze). Czy znajomość DbContext oznacza, że ​​możesz mi pomóc? –

Odpowiedz

37

Można execute raw SQL zapytań z pierwszym z zastosowaniem metody SqlQuery kod EF:

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

Genialny! To działało idealnie po tym, jak zmieniłem ostatnią linię na var total = _context.Database.SqlQuery (sql) .single(); –

+0

Ale muszę użyć dynamicznego jak poniżej, var sql = "SELECT * FROM dbo.Articles"; dynamic total = _context.Database.SqlQuery (sql) .ToList(); ..... Czy to możliwe?? –

+0

Dziękujemy! rozwiązał mój problem! :) –

Powiązane problemy