Gibt es eine Möglichkeit zu zwingen, OracleCommand.BindByName, um wahr zu sein, die standardmäßig für ODP.NET?
Da die System.Daten.OracleClient Bibliothek wurde veraltet, wir sind in den Prozess der Migration unserer code-Basis zu verwenden Oracle Data Provider für .NET (ODP.NET) statt. Eine der Fragen, auf die wir gestoßen sind, ist dass das System.Daten.OracleClient verwendet parameter name Bindung im Gegensatz zur Bindung durch position und der code direkt auf die System.Daten.OracleClient.OracleCommand im Gegensatz zur Verwendung einer intermediate data layer.
Da ist ziemlich viel code, gibt es eine einfache Möglichkeit, um Kraft der ODP.NET OracleCommand.BindByName, um wahr zu sein standardmäßig, oder müssen wir gehen durch und setzen Sie den Wert jedes mal, wenn es verwendet wird? Andernfalls, gibt es eine einfache Möglichkeit zum einfügen dieser Zeile des Codes in Visual Studio 2008?
OracleCommand.BindByName
standardmäßig auf true.K. - Das ist eine Art, was ich hatte Angst, sieht aus wie wir müssen einen Weg finden, alle stellen im code, müssen Sie es dann.
Sind die Befehle und Aufrufe von gespeicherten Prozeduren oder nur text Abfragen? Ich Frage nur, weil, wenn Sie die gespeicherte Prozedur aufruft, dann BindByName nicht trotzdem funktionieren - müssen Sie die korrekte parameter-Reihenfolge.
M - Sie sind alle text Abfragen.
Für noch mehr neugierig Oracle Standard, warten Sie, bis Sie versuchen, Sie zu Lesen, eine LANGE! Schlage vor, Sie setzen immer InitialLONGFetchSize = -1 als gut.
InformationsquelleAutor rjzii | 2010-02-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß, dieser thread ist alt, aber ich hatte das gleiche problem heute und dachte, ich würde teilen meine Lösung, falls jemand anderes dieses problem gehabt. Da OracleCommand abgedichtet ist (das nervt), ich habe eine neue Klasse, kapselt der OracleCommand, Einstellung der BindByName auf true bei der Instantiierung. Hier ist ein Teil der Umsetzung:
Dann alles, was ich tun musste, um zu Bereinigung der Befehle war eine Suche für OracleCommand und ersetzen mit DatabaseCommand und testen.
DatabaseCommand sollte IDisposable implementieren, als OracleCommand ist abgeleitet von DbCommand, die dies implementiert.
Gibt es immer noch keine bessere Lösung als diese? Jeder Oracle-Antwort scheint zu beinhalten, erstellen eine Art von Shims make-up für den Oracle-client Mängel.
InformationsquelleAutor BrandonZeider
Ich nicht versuchen Sie es aber,
Habe ich gesehen so etwas wie
"
cmd.GetType().GetProperty("BindByName").SetValue(cmd,true,null);
"bei PetaPoco.cs-Datei.
Vielleicht hilft es.
Dies ermöglicht auch das arbeiten mit Befehle die zimmerreserviereung, ohne das eine Abhängigkeit der Oracle-spezifischen Daten-Objekte.
InformationsquelleAutor user925169
Ich hatte das gleiche problem mit SqlDataSource-Update-Befehle nach der Portierung ASPX-code zu Oracle.DataAcees.Client und löste es, indem Sie OracleCommand.BindByName Eigenschaft im SqlDataSource-OnUpdating handler wie diese:
InformationsquelleAutor Bore
Hinzufügen partielle Klasse für Ihre TableAdapter, und die add-Methode oder Eigenschaft, wie Sie wollen, mit diesem code:
InformationsquelleAutor DerSkythe
Ich dieses Problem behoben Einstellung der BindByName-Eigenschaft in der Prozedur des SqlDataSource-Update-Ereignis:
InformationsquelleAutor ARoller
Reduzieren # Zeilen code
VB.NET
C#
InformationsquelleAutor Glenn