Ich habe eine Klasse mit einer Methode einige Datenbankaktionen durchführen.
Ich möchte zulassen, dass ein bestehender (offener) Kontext im Methodenaufruf für den Datenbankzugriff gesendet wird.
Wenn jedoch kein Kontext gesendet wird, erstelle ich einen neuen.Wird beim Erstellen eines Verweises auf ein bestehendes Objekt entsorgt?
Ich möchte nur sicherstellen, dass das Objekt nicht entsorgt wird, wenn es im Methodenaufruf enthalten ist.
Wird das Objekt entsorgt, wenn in der aufgerufenen Methode ein using-scope verwendet wird?
// DbService class
class DbService
{
private void SomeDbAction(SomeDbContextObject backendContext = null)
{
using (var context = backendContext ?? CreateNewContextObject())
{
// Some actions using the context
}
}
}
// Call from another class
class Temp
{
void DoSomeThing()
{
var existingContext = new SomeDbContextObject();
dbService.SomeDbAction(existingContext);
// Is dbService disposed here?
UseContextForSomethingElse(existingContext);
}
}
Wird dbService hier entsorgt? Ja, das 'using' Statement zu verlassen, kümmerte sich darum. – spender
'using' ruft' Dispose() 'auf. Wenn Sie nicht möchten, dass 'Dispose()' aufgerufen wird, verwenden Sie keine Anweisung 'using'. –
Dispose wird aufgerufen, wenn Sie die schließende Klammer der using-Anweisung erreichen, da Sie keine automatische Entsorgung wünschen, entfernen Sie einfach die using-Anweisung und führen Sie sie manuell mit existenderContext.Dispose aus, wenn Sie bereit sind – MikeT