SubsonicのFind<T>
メソッドを使用して、「null」値を含むフィールドを持つ行を検索する方法を教えてください。議論のために、 "SynchronizedOn"と呼ばれるnull可能なDateTimeフィールドを含む "Visit"というac#クラスがあり、Subsonicの移行で対応する "Visits"テーブルと "SynchronizedOn"フィールドが作成されたとしましょう。私は、SQLクエリを自分で書くことだった場合Subsonic 3、SimpleRepository、SQL Server:NULLフィールドを持つ行を見つける方法
、私は次のように記述します。
SELECT * FROM Visits WHERE SynchronizedOn IS NULL
私は次のコードを使用する場合:
var visits = myRepository.Find<Visit>(x => x.SynchronizedOn == null);
サブソニックは、次のSQLクエリに変換しますが。
SELECT * FROM Visits WHERE SynchronizedOn == null
これは決して行を返しません。
私は、次のコードを試してみましたが、それはエラーがスローされます。
visits = repository.Find<Visit>(x => x.SynchronizedOn.HasValue);
私は、次の構文を使用することができました:
var query = from v in repository.All<Visit>()
where v.SynchronizedOn == null
orderby v.CreatedOn
select v;
visits = query.ToList<Visit>();
をしかし、それはFind<T>
メソッドを使用するような短いように素敵ではありません。
Find<T>
メソッドで「SynchronizedOn IS NULL」条件をどのように指定できるかは、誰でも知っていますか?
をあなたの提案が私のLINQクエリに改良したものであるが、検索方法を使用していません。 Find メソッドがnullをチェックできないことを理解する必要がありますか? –
desautelsj