LINQ to SQL gespeicherte Prozeduren mit mehreren Ergebnissen in Visual Studio 2008
-
25-09-2019 - |
Frage
Ich bin mit Visual Studio 2008, und ich habe eine gespeicherte Prozedur erstellt, dass wählt zwei verschiedene Ergebnismengen zurück. Ich ziehe die gespeicherte Prozedur auf eine LINQ to SQL dbml Datacontext-Klasse, so dass Visual Studio den folgenden Code in der cs-Datei zu erstellen:
[Function(Name="dbo.List_MultiSelect")]
public ISingleResult<DataAccessLayer.DataEntities.List_MultiSelectResult> List_MultiSelect()
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())));
return ((ISingleResult<DataAccessLayer.DataEntities.List_MultiSelectResult>)(result.ReturnValue));
}
darf nicht der Designer den Code zu verwenden IMultipleResults generieren? Oder ich Hand-Code haben das?
Lösung
mithilfe des Designers wird eine ISingleResult
zurückkehren, während mit SqlMetal die IMultipleResult
erzeugen, die Sie erwarten. Ansonsten ja, werden Sie wahrscheinlich dort springen und direkt zwicken.
Eine einfache Möglichkeit wäre SqlMetal zu verwenden, dann kopieren / fügen Sie den Code erzeugt sie. Beachten Sie, dass es in den Designer-Code einfügen möglicherweise nicht ideal sein, da nachfolgende Code-Generierung wird es überschrieben. Vielleicht können Sie den entsprechenden Code auf eine Teilklasse bewegen, dieses Problem zu vermeiden.
Meine ausführliche Antwort hier behebt dieses Problem: SqlMetal erzeugt fälschlicherweise den Rückgabetyp meiner gespeicherten proc (LINQ)