2013-08-07 18 views
18

Devo selezionare più colonne da un database e non ho un'entità corrispondente. così la mia domanda si presenta così:Query SQL non elaborata di SQL Entity

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

Mi è toccato il set di risultati, ogni riga contiene la lista di stringhe, ma conteggio è 0.

Allora, come faccio a selezionare più colonne utilizzando Database.SqlQuery?

risposta

44

Bisogna catturare i risultati in una classe con corrispondenti nomi di proprietà, e (almeno) un costruttore senza parametri:

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

Ho trovato questo per lavorare bene - tranne quando il campo risultato SP ha un nome come "spazio non allocato", che ovviamente non può essere utilizzato come nome di una proprietà .NET. Qualcuno ha un'idea di cosa fare in quel caso? – BCA

+2

Probabilmente usa un alias: 'seleziona [spazio non allocato] AS spazio non allocato da Tabella'. –