2016-03-21 5 views
0

Mit EntityFramework, ADO.NET, usw., wir Operator verwenden verwenden immer, wenn Kontext erstellen usw.Warum MongoDB C# Treiberdatenbank kein Gerät IDisposable?

Warum MongoDB nicht IDisposable-Schnittstelle, für die Verwendung wie dies ohne eigene abstact Architektur schaffen implementieren:

using (var database = _mongoDbFactory.GetDatabase("dbName")) 
{ 
    ..... 
} 

Wenn ich die aktuelle Syntax verwende, fühle ich Unbehagen, wie meine Kollegen.

Antwort

0

Ich habe mir die Quelle von Mongo nicht angesehen, um es sicher zu wissen, aber wahrscheinlich liegt es daran, dass dieser Datenbankkontext vollständig aus verwalteten Ressourcen in .Net besteht.

IDisposable benötigt im Allgemeinen nur dann eine Implementierung, wenn andere Systemressourcen als verwalteter Speicher zugewiesen sind (z. B. native Bibliotheken usw.).

Quelle: https://msdn.microsoft.com/en-us/library/b1yfkh5e%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

+0

Ich bin nicht über Finalisierung für nicht verwalteten Ressourcen sprechen. Wir wollen mehr standardisiertes nützliches Werkzeug – ZOXEXIVO

+0

Die Implementierung von 'IDisposable' macht nichts mehr oder weniger" standardisiert ". Wenn Sie nach 'GetDatabase' suchen, um etwas zurückzugeben, das' IDisposable' implementiert, so dass es dem EF-Muster entspricht, können Sie entweder Mongo abzweigen und die Ausgabe dieser Methode ändern oder einen Wrapper für 'GetDatabase()' schreiben dass es immer etwas zurückgibt, das 'IDisposable' implementiert. – MutantNinjaCodeMonkey