Questa potrebbe essere una risposta semplice, ma non riesco a vedere come eseguire una stored procedure con EF CTP5.Entity Framework CTP5 - Come chiamare la stored procedure?
In Entity Framework 4.0, abbiamo fatto questo:
ExecuteFunction("ContainerName.StoredProcName", new ObjectParameter("Id", id))
.
Quale è un metodo su ObjectContext
.
Ma DbContext
non ha un metodo simile.
Come si chiama un proc memorizzato? Non è supportato in EF CTP5?
EDIT:
ho trovato this thread, in cui si afferma che devi fare questo:
var people = context.People.SqlQuery("EXECUTE [dbo].[GetAllPeople]");
Questo solleva alcune preoccupazioni:
1) Si è ora chiamando una stored prodedure su il set, non il contesto. Le stored procedure devono essere disponibili in tutto il contesto, non legate a un particolare set di entità. Proprio come sono sotto il "Database" in SQL Server, e non sotto la "Tabella".
2) Per quanto riguarda i tipi complessi ? In precedenza avevo restituito un tipo complesso da una stored procedure. Ma ora, sembra che devi mappare direttamente a un'entità? Non ha alcun senso. Ho molti proc memorizzati che restituiscono un tipo non rappresentato direttamente da un ObjectSet/DBSet, che non riesco a vedere come posso accostare.
Spero che qualcuno possa chiarirlo, perché da quanto ho capito finora, non sarò in grado di effettuare l'aggiornamento a CTP5.
Il che è esattamente quello che ho messo nella mia modifica alla mia domanda. – RPM1984
Questo risponde alla tua prima preoccupazione. Gli sp sono disponibili in tutto il contesto. DbContext.Database è un riferimento all'oggetto DbDatabase incorporato. Questo è diverso da context.People.SqlQuery che opera su DbSet. –
Ah, il tuo diritto, ti darà questa possibilità e tornerai da te. – RPM1984