DbProviderFactory.CreateCommandBuilder实际上是否可以返回null?
问题描述:
我用下面的方式来净化数据库名称:DbProviderFactory.CreateCommandBuilder实际上是否可以返回null?
var dbProviderFactory = DbProviderFactories.GetFactory(connection);
using (var commandBuilder = dbProviderFactory.CreateCommandBuilder())
{
var fooSafe = commandBuilder.QuoteIdentifier(foo)
}
但每次我这样做R·时候抱怨的commandBuilder
并说
可能System.NullReference例外。
要摆脱这种警告我通常把
Debug.Assert(commandBuilder != null);
创建命令生成器之后。
我主要使用SqlConnection
或SQLiteConnection
。
没有太多关于它的documentation,只是说:
返回供应商的类的新实例实现DbCommandBuilder将类。
我不确定我是否应该检查命令生成器为null还是忽略警告?
答
由于文档说它会返回一个“新实例”,我不会担心空检查。
Resharper抱怨可能是因为它是一个虚拟方法,任何自定义实现都可能返回null。
作为一个侧面说明,你可以有一个扩展方法,如[这里](https://github.com/matkoch/TestFx/blob/master/src/TestFx.Core/Utilities/Object.NotNull.cs# L26),这将为您节省额外的断言线。 – Matthias