2016-08-04 7 views
1

나는 데이터베이스 이름을 소독하기 위해 다음과 같은 패턴을 사용 :DbProviderFactory.CreateCommandBuilder가 실제로 null을 반환 할 수 있습니까?

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

하지만이 R 번호를 할 때마다

가능한 System.NullReference 예외를 commandBuilder에 대해 불평을 말한다.

내가 보통 명령 빌더를 생성 한 후

Debug.Assert(commandBuilder != null); 

를 넣어이 경고를 제거합니다.

나는 주로 SqlConnection 또는 SQLiteConnection을 사용합니다.

는 DbCommandBuilder 클래스를 구현하는 공급자의 클래스의 새로운 인스턴스를 돌려줍니다

는 말한다 documentation에 대해 많이 없습니다.

는 내가 널 (null)에 대한 명령 빌더를 확인하거나 경고를 무시할지 여부를 결코 확실 해요?

+2

사이드 노트에서 [여기]와 같은 확장 방법을 사용할 수 있습니다 (https://github.com/matkoch/TestFx/blob/master/src/TestFx.Core/Utilities/Object.NotNull.cs# L26), 이는 당신에게 추가적인 단언 선을 줄 것입니다. – Matthias

답변

1

문서에 "새 인스턴스"가 반환 될 것이므로 null 확인에 대해 걱정할 필요가 없다고 말합니다.

Resharper는 가상 메소드이고 모든 사용자 정의 구현이 null을 리턴 할 수 있기 때문에 아마도 불평하고 있습니다.

관련 문제