我使用正常数据上下文的代码如下:
var dc = new myDataContext();
Contract.Assume(dc.Cars!= null);
var cars = (from c in dc.Cars
where c.Owner == 'Jim'
select c).ToList();
Run Code Online (Sandbox Code Playgroud)
但是当我将过滤器转换为这样的扩展方法时:
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);
}
Run Code Online (Sandbox Code Playgroud)
我收到以下警告:
警告:CodeContracts:需要unproven:source!= null