2013-08-07 15 views
18

Muszę wybrać wiele kolumn z bazy danych i nie mam pasującego obiektu. więc moje zapytanie wygląda następująco:Surowe zapytanie SQL z obiektu encji

var result = _dbContext.Database.SqlQuery<List<string>>(
      "select ID, NAME, DB_FIELD from eis_hierarchy"); 

otrzymuję zestaw wyników, każdy wiersz zawiera listę ciągów ale liczba 0.

Więc jak mam wybrać wiele kolumn wykorzystujące Database.SqlQuery?

Odpowiedz

44

Trzeba uchwycić wyniki w klasie z pasującymi nazwy właściwości, oraz (co najmniej) konstruktora bez parametrów:

class DbResult 
{ 
    public int ID { get; set; } 
    public string NAME { get; set; } 
    public string DB_FIELD { get; set; } 
} 

var result = _dbContext.Database.SqlQuery<DbResult>(
       "select ID, NAME, DB_FIELD from eis_hierarchy"); 
+0

znalazłem to dobrze - z wyjątkiem, gdy pole wynik SP ma imię jak "nieprzydzielone miejsce", co oczywiście nie może być użyte jako nazwa właściwości .NET. Czy ktoś ma pomysł, co zrobić w takim przypadku? – BCA

+2

Prawdopodobnie użyj aliasu: 'wybierz [nieprzydzielone miejsce] AS unallocated_space from Table'. –