Wie vermeide ich “source! = Null”, wenn ich Code Contracts und Linq To Sql verwende?
Ich habe den folgenden Code unter Verwendung eines normalen Datenkontexts, der hervorragend funktioniert:
var dc = new myDataContext();
Contract.Assume(dc.Cars!= null);
var cars = (from c in dc.Cars
where c.Owner == 'Jim'
select c).ToList();
Allerdings, wenn ich den Filter in eine Erweiterungsmethode wie diese konvertiere:
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);
}
Ich erhalte die folgende Warnung:
Warnung: CodeContracts: erfordert unbewiesen: Quelle! = null