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?

War es hilfreich?

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)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top