Ho cercato un argomento simile alla mia domanda su Internet negli ultimi giorni. Alla fine ho fatto ricorso a questa domanda io stesso.Mappatura dei risultati stored procedure Entity
Utilizzo della metodologia code-first e EF 4.3.1 Ho creato una classe di contesto, classi di entità e classi per memorizzare l'output della stored procedure. La classe di contesto ha metodi che eseguono determinate stored procedure utilizzando SqlQuery<T>
.
Esempio:
public IEnumerable<Results> GetData(int id)
{
var parameters = new SqlParameter[] { new SqlParameter("@id", id) };
var result = this.Database.SqlQuery<Result>("Exec dbo.sproc_GetData @id", parameters);
var data= result.ToList<Result>();
return data;
}
Come sto tracciando il debug di miei dati ritorna, e dei dati viene associato a proprietà con un nome corrispondente. Tuttavia, nell'output c'è una colonna con un "/"
nel nome (esempio: Info/Data
). Ovviamente non posso nominare una proprietà del genere così ho pensato che avrei potuto mappare l'output utilizzando l'attributo di colonna ([Column("Info/Data")]
):
[Column("Info/Data")]
public string InfoData
{
get { return infoData; }
set { infoData= value; }
}
Ho anche provato ad utilizzare l'operatore di Verbatim ([Column(@"Info/Data")]
), avvolgendo il testo con []
([Column("[Info/Data]")]
) e ho provato entrambi ([Column(@"[Info/Data]")]
). Quando passo il codice vedo che le proprietà con i nomi delle colonne corrispondenti sono assegnate, ma le proprietà con l'attributo della colonna vengono ignorate e ignorate durante l'assegnazione.
Ho anche provato fluent-api per ogni colonna per l'entità.
modelBuilder.ComplexType<Result>().Property(d => d.InfoData).HasColumnName("Info/Data");
ma che getta la seguente eccezione:
Il lettore di dati è incompatibile con il specificata 'NameSpace.Result'. Un membro del tipo, "InfoData", non ha una colonna corrispondente nel lettore di dati con lo stesso nome.
Nel mio progetto NameSpace.Result
è una classe (nome cambiato per sicurezza) e InfoDatais
è la proprietà che provo a tracciare utilizzando fluente-API (la colonna SQL corrispondente ha una/in esso; es: Info/Dati) .
Qualcuno si è imbattuto in questo problema?
Se il mio problema non è chiaro o è stato chiesto prima di farmi sapere.
Mi chiedo che tipo di persone chiamino Classi/tabelle di database con "/" carattere. –
Questo fa due di noi. Non ho scritto il proc. Mi è stato detto di usare i dati. È stato molto sconvolgente vedere accadere l'aliasing. –
Esiste la possibilità di creare wrapper SP con nomi di colonne normali nel risultato? – vittore