2016-05-30 19 views
1

Ich habe ein EF-Modell aus einer MS SQL-Datenbank generiert und ich habe sowohl StoredProcedures und Tabellen enthalten. Ich möchte gespeicherte Prozeduren in meinem Projekt implementieren. Welches ist der beste Ansatz, der mehr Vorteile bietet?Welches ist der beste Ansatz zum Aufrufen von Store-Prozeduren in Entity Framework

var data = db.DARs.SqlQuery("db.sp_GetEmployees").ToList(); 

oder

var data2 = db.sp_GetEmployees().ToList(); 

Hier ist voll Code:

private UniversityEntities1 db = new UniversityEntities1(); 

public List<DAR> test() 
{  
    var data = db.DARs.SqlQuery("db.sp_GetEmployees").ToList(); 
    var data2 = db.sp_GetEmployees.ToList(); 
    return data; 
} 

Antwort

2

Es ist besser Mapper gespeichert procedutes zu verwenden, anstatt Klar SQL-Text des Aufrufs (in Ihrem exmple data2).

Es ist besser becouse EF generiert Ergebniszeile mit bestimmten Datentypen, die Ihre gespeicherte Prozedur zurückgibt. Und du musst es nicht in deinem Code abbilden - EF mach es für dich. Dann können Sie mit dem Ergebnis arbeiten, als ob Sie mit einer Sammlung arbeiten, die Objekte mit typisierten Feldern enthält.

1

Ich möchte auch, dass

var data2 = db.sp_GetEmployees().ToList(); 

durch hinzufügen indem Sie sicherstellen, dass jedes Mal in einem Kompilierung-Fehler die Prozedur führt das Umbenennen Sie diese Aussage verwenden. Diese können schnell behoben werden.

Wenn Sie nur eine Zeichenfolge verwenden, müssen Sie daran denken, alle Vorkommen des Prozedurnamens im gesamten Projekt zu ersetzen. Das Projekt selbst wird kompiliert.

+0

Es wird nicht zu Kompilierungsfehler führen. Sie erhalten nur dann einen Fehler, wenn dieser Code ausgeführt wird –

Verwandte Themen