私は通常のデータコンテキストを使用して次のコードを持っていますが、これはうまく機能します:
var dc = new myDataContext();
Contract.Assume(dc.Cars!= null);
var cars = (from c in dc.Cars
where c.Owner == 'Jim'
select c).ToList();
ただし、フィルターを次のような拡張メソッドに変換すると、次のようになります。
var dc = new myDataContext();
Contract.Assume(dc.Cars!= null);
var cars = dc.Cars.WithOwner('Jim');
public static IQueryable<Car> WithOwner(this IQueryable<Car> cars, string owner)
{
Contract.Requires(cars != null);
return cars.Where(c => c.Owner == owner);
}
次の警告が表示されます。
警告:CodeContracts:証明されていないものが必要です:source!= null