2016-08-04 41 views
1

Ich benutze das folgende Muster Datenbanknamen zu sanieren:Kann der DbProviderFactory.CreateCommandBuilder tatsächlich eine Null zurückgeben?

var dbProviderFactory = DbProviderFactories.GetFactory(connection); 
using (var commandBuilder = dbProviderFactory.CreateCommandBuilder()) 
{ 
    var fooSafe = commandBuilder.QuoteIdentifier(foo) 
} 

aber jedes Mal, wenn ich dieses R # tun beschwert sich über die commandBuilder und sagt

Mögliche System.NullReference Ausnahme.

Um diese Warnung loszuwerden ich

Debug.Assert(commandBuilder != null); 

nach dem Erstellen des Befehls Builder in der Regel

setzen.

Ich verwende meistens eine SqlConnection oder SQLiteConnection.

Es gibt nicht viel darüber in der documentation, die nur sagt:

Gibt eine neue Instanz der Klasse des Providers, der die DbCommandBuilder-Klasse implementiert.

Ich bin nie sicher, ob ich den Befehlsersteller für null überprüfen oder einfach die Warnung ignorieren soll?

+2

Als Nebenbemerkung könnten Sie eine Erweiterungsmethode wie [hier] haben (https://github.com/matkoch/TestFx/blob/master/src/TestFx.Core/Utilities/Object.NotNull.cs# L26), was Ihnen eine zusätzliche Assertion-Zeile ersparen würde. – Matthias

Antwort

1

Da die Dokumentation sagt, dass es eine "neue Instanz" zurückgeben wird, würde ich mich nicht um Null-Prüfung kümmern.

Resharper beschwert sich möglicherweise, weil es eine virtuelle Methode ist und jede benutzerdefinierte Implementierung null zurückgeben kann.