Laden...

Objekt an Stored Procedures übergeben

4 Antworten
799 Aufrufe
Letzter Beitrag: vor 15 Jahren
Objekt an Stored Procedures übergeben

verwendetes Datenbanksystem: <SqlExpress/Server05>
hallo leute!
ich hab ne frage zu stored procedures..

ich rufe meine über folgendes auf(das ganze ist mit nem datacontext verbunden)

[Function(Name = "dbo.GetHoleReparatur")]
       public ISingleResult<RptClasses.Reparatur> GetSetReparatur([Parameter(DbType = "int")] string RepNr, [Parameter(DbType = "int")] string choice)
       {
           IExecuteResult result = ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())));
           return ((ISingleResult<RptClasses.Reparatur>)(result.ReturnValue));
       }

wie man sehen kann, werden dort auch parameter übergeben..
da ich nun etwas faul bin, wollt ich mal nachfragen(vorneweg google genutzt..) ob man auch ein objekt übergeben könnte, weil ich nicht so viel tippen will...

ich hatte irgendwas mit nem cursor gefunden, dem man ein array übergeben könnte...aber so richtig zufreidenstellend fand ich das nich...

Hallo KingPin

Eigentlich würde ich sagen schreib einfach eine Proxy-Methode:


public ISingleResult<RptClasses.Reparatur> GetSetReparatur(Reparatur rep)
{
   return GetSetReparatur(rep.RepNr, 123);
}

Allerdings weiß ich nicht was "GetSet" bedeutet bzw. Was "choice" bewirken soll.

Grüße
Flo

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.

nun..
choice soll ein wert sein, der angibt, ob es ein update, insert, oder select werden soll...
war fürs erste so angedacht..
in reparatur sind ziemlich viele felder drin, die man als parameter ausschreiben müsste.. das will ich irgendwie umgehen..

wie soll das mit der proxy-klasse funktionieren?
habs so noch nicht gemacht...

und an eine stored procedure kann man kein objekt in dem sinne von c# übergeben wie man das gewoht ist.

kann man da irgendwelche strukturen festlegen?

Hallo KingPin

choice soll ein wert sein, der angibt, ob es ein update, insert, oder select werden soll...
war fürs erste so angedacht..

Für den Anfang okay. Wenn die Datenbank aber größer wird solltest du das später austauschen, da Prozeduren mit mehr als einer Funktionalität immer das Problem haben, dass nicht der korrekte Execution-Plan verwendet wird.

wie soll das mit der proxy-klasse funktionieren?
habs so noch nicht gemacht...

So wie ich's in dem Beispiel gemacht habe. Du wirst nicht drum rum kommen, einmal die von dir gepostete Methode zu schreiben. Um aber zu vermeiden, dass du die überall immer mit "ctx.GetSetReparatur(reparator.RepNr)" aufrufen musst würde ich eine zweite Methode danebenstellen die als Parameter ein "Reparatur" Objekt erhält und intern einfach die andere Methode aufruft. So bleibt die Sache auch überall sonst OOP.

Grüße
Flo

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.