Voglio sapere come inviare parametri alla stored procedure dal framework entità? Grazie in anticipo.Come passare i parametri alla stored procedure da Entity Framework?
risposta
Prima domanda: per quale versione del Entity Framework ?? .NET 3.5? .NET 4 ?? Le cose sono cambiate in modo significativo (e migliorato!) In .NET 4.
E in secondo luogo: cosa vuoi fare:
recuperare righe dal database
eseguire una stored procedure, senza valore di ritorno
mappa INSERIRE/AGGIORNA/ELIMINA le operazioni su un'entità su un proc memorizzato ??
Questi sono tre scenari piuttosto diversi - quindi abbiamo bisogno di sapere che cosa stai andando.
anche: basta cercare con Google (o Bing) - ci sono sacco di post sul blog e tutorial là fuori che vi mostra come farlo - un rapido elenco:
- Entity Framework with .NET 3.5 and VS 2008 SP1
- Using a Stored Procedure in Entity Framework 4
- Call Stored Procedure from Entity Framework
e letteralmente migliaia di più ......
Aggiornamento: ok, quindi si desidera recuperare i dati dal database. In tal caso, i tuoi passi sono:
- andare al modello EF (* file .edmx) nella finestra di progettazione
- destro del mouse e selezionare
Update Model from Database
- ritirare la stored procedure che si desidera utilizzare e andare attraverso la procedura guidata
Questo crea una voce per la stored procedure nel fisico modello di archiviazione. Successivo:
- andare al
Model Browser
(? Vedere il menu contesto di cui sopra E 'appena sottoUpdate Model from Database
), passare al modello di archiviazione e trovare la vostra procedura - pulsante destro del mouse su quel procedimento
- Selezionare
Add Function Import
che importa la "funzione" (stored procedure) dal modello di archiviazione fisica nel concetto modello ual (la classe di contesto dell'entità, in pratica).
Qui, si hanno quattro scelte:
- tuo stored procedure potrebbe non restituire nulla (come nel mio esempio) - allora è solo un metodo sulla classe di contesto che si può chiama che fa qualcosa
- il tuo stored proc potrebbe restituire una raccolta di scalari, ad esempio un elenco di valori INT o qualcosa del genere - scegliere il valore appropriato nella discesa
- tuo proc memorizzato potrebbe restituire entità dal modello, ad esempio, completi
Customer
entità - in questo caso, selezionare l'ultima opzione e scegliere il soggetto che si desidera mappare (il vostro proc memorizzato deve restituire tutte le colonne per tale entità, in questo caso)
O:
- tuo proc memorizzato restituisce qualcosa - ma né solo gli scalari (non solo INT), né un soggetto - in questo caso, si può scegliere la terza opzione e definire un nuovo tipo complesso (una classe) che conterrà i risultati restituiti da la stored procedure.
Qualunque sia lo fai - fondamentalmente EF creerà un metodo sulla tua classe contesto oggetto che si può chiamare. Tutti i parametri richiesti dal proc memorizzato saranno i parametri di tale metodo in modo che tu possa facilmente passare, ad es. stringhe, interi ecc
Un altro scenario è che hanno bisogno di chiamare una stored procedure con più parametri di output. Di seguito è riportato un esempio completo.
public void MyStoredProc(int inputValue, out decimal outputValue1, out decimal outputValue2)
{
var parameters = new[] {
new SqlParameter("@0", inputValue),
new SqlParameter("@1", SqlDbType.Decimal) { Direction = ParameterDirection.Output },
new SqlParameter("@2", SqlDbType.Decimal) { Direction = ParameterDirection.Output }
};
context.ExecuteStoreCommand("exec MyStoredProc @[email protected], @[email protected] output, @[email protected] output", parameters);
outputValue1 = (decimal)parameters[1].Value;
outputValue2 = (decimal)parameters[2].Value;
}
Si prega di notare i tipi utilizzati (decimale). Se è necessario un altro tipo, ricordarsi di cambiare non solo nella lista metodo di argomento, ma anche il SqlDbType.XXX
.
- 1. Passare DataTable alla stored procedure come argomento
- 2. Entity Framework non mostrerà stored procedure
- 3. Il codice di Entity Framework supporta prima le stored procedure?
- 4. valore scalare da stored procedure tramite Entity Framework
- 5. Esiste un modo più pulito o elegante per passare più parametri alla stored procedure SQL utilizzando Entity Framework?
- 6. Chiamata alla stored procedure con parametri
- 7. Entity Framework 4 Stored Procedure Call Timing Out
- 8. Entity Framework CTP5 - Come chiamare la stored procedure?
- 9. Come utilizzare una stored procedure in ADO.NET Entity Framework
- 10. Come passare i parametri al metodo DbSet.SqlQuery in Entity Framework
- 11. Entity Framework: come inserire più stored procedure in una transazione?
- 12. Chiamata alla stored procedure VBA
- 13. Come chiamare una stored procedure da un'altra stored procedure?
- 14. Ottenere dati dalla stored procedure con Entity Framework
- 15. Entity Framework EF4.1 - stored procedure "impossibile trovare nel contenitore"
- 16. recupera i parametri dalla stored procedure?
- 17. Elenco di restituzione di Entity Framework dalla stored procedure
- 18. Utilizzare stored procedure in Entity Framework (codice prima)
- 19. SQL: nella clausola nella stored procedure: come passare i valori
- 20. Entity Framework Problema durante l'esecuzione di stored procedure
- 21. stored procedure con numero variabile di parametri
- 22. chiama stored procedure da solr
- 23. Come chiamare una stored procedure (con parametri) da un'altra stored procedure senza tabella temporanea
- 24. Mappatura selezione stored procedure nel framework entità
- 25. Come utilizzare Entity Framework per associare i risultati di una stored procedure all'entità con parametri con nome diverso
- 26. Mappatura dei risultati stored procedure Entity
- 27. Come si eliminano i risultati da una stored procedure da una stored procedure?
- 28. Come dovrei restituire un int da una stored procedure in Entity Framework 4.1?
- 29. Come passare i parametri alla funzione setTimeout
- 30. Passaggio dei parametri come Xml a una stored procedure
Sto usando .NET 4. La mia stored procedure restituisce valori dalla tabella di dati su cui sto interrogando. Ma voglio passare i parametri alla mia stored procedure dal mio programma. –
@SatishNissankala: ampiamente aggiornato la mia risposta - utile? –
Grazie a marc_s. È davvero utile –