Ho un modello che è mappato al database tramite EF7. Tutte le proprietà sono identiche alle colonne mappate della tabella.
Ora ho una stored procedure, che restituisce alcune colonne congiunte, ma la base è ancora il modello mappato.
Ecco il mio modello (Entity) che è mappato a Table1 sul mio database.
public partial class Table1 { public int id { get; set; } public bool Column1{ get; set; } public int Column2 { get; set; } public int Column3 { get; set; } public int Column4 { get; set; } public int Column5 { get; set; } }
My StoredProcedure restituisce tutte queste colonne e inoltre una colonna da un'altra tabella, che contiene informazioni aggiuntive su questo oggetto.
Quindi My StoredProcedure ha questo aspetto:
CREATE PROCEDURE Table1_Select
AS
BEGIN
SELECT Column1,
Column2,
Column3,
Column4,
Column5,
Table2.JoinedColumn1
FROM Table1
JOIN Table2 on Table1.ID = Table2.ID_Table1
END
La mia idea era di aggiungere una proprietà al modello
public string JoinedColumn1 {get; set;}
Questo funziona per l'esecuzione di StoredProcedure, ma non funziona non appena voglio ottenere una Entity con
MyContext.Table1.FirstOrDefault(t=>t.id == 1)
ciò restituisce sempre un errore di server 500 in Fiddler mentre l'esecuzione di stored procedure con "Table1.FromSql (" Table1Select ")" funziona correttamente.
O devo decidere se utilizzare StoredProcedures per il mio modello OPPURE accedere direttamente alle Entità?
Qualche Best-Practices o soluzione per questo?
Molte grazie in anticipo. Nicn
il problema NON è che non riesco a ottenere i dati da stored procedure. Il problema è che a causa di stored procedure, il mio modello ha più proprietà rispetto alle colonne nella tabella del database. Tuttavia, mi piacerebbe comunque accedere alle entità modello a volte direttamente senza utilizzare la stored procedure che non funziona poiché il debugger dice "colonna non valida" per la colonna che non si trova nella tabella ma nella procedura memorizzata.
Spero che lo renda più chiaro.
Grazie ancora in anticipo.
Nicn