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
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