Wir verwenden ein Orakel Nclob für eine der Spalten in unserer Datenbank, während eine "gepufferte: false" Auswahl von 8 Millionen Zeilen, die wir immer aus dem Speicher laufen würde .Dapper orm Nicht schließen oracle nclob auf ungepufferten Stream .Query <T>
using (var connection = new OracleConnection(_databaseConfiguration.ConnectionString))
{
connection.Open();
var result = connection.Query<ClassWithNClob>(query, param, buffered: false);
foreach (var element in result)
{
//do something with element that has a nclob
}
}
Wir haben um diese von den Standard OracleDataReader verwenden und wenn wir die NCLOB wir wickelte es mit einer using-Anweisung zugreifen wollte. Wir möchten Dapper dafür verwenden, da dies die Konvertierung viel einfacher machen würde, aber an dieser Stelle nicht möglich ist.
using (var connection = new OracleConnection(_databaseConfiguration.ConnectionString))
{
connection.Open();
var command = new OracleCommand(query,connection);
using (OracleDataReader oraReader = oracleCommand.ExecuteReader())
{
while(oraReader.Read())
{
using(var blobStream = reader.GetOracleClob(2))
{
//something with bloblStream.Value
}
}
}
}
Wir glauben, dass dies ein Fehler ist, aber gibt es etwas, das wir gerade vermissen?
Können Sie konkret sein? Was genau macht die Klasse für diese Eigenschaft? Was ist die Mitgliedererklärung? –
In unserer Situation setzen wir es auf eine Zeichenfolge. öffentliche Zeichenkette Record {get; einstellen; } –
und das ist im 'ClassWithNClob' Beispiel? Weil ich überrascht bin, dass * überhaupt funktioniert * - würde ich erwarten, dass dies fehlerhaft ist oder zumindest mit irrelevanten Strings endet (wie der Typname von ToString()) - was passiert eigentlich, wenn du das tust? (Ich kann nicht überprüfen; kein Oracle-Benutzer) –