我有以下代码:
var carsContext = new CarsDataContext();
IQueryable<Car> allCars = carsContext.Cars;
foreach (var car in allCars)
Console.WriteLine(car.Color);
我希望每个汽车对象都知道用于检索它的原始数据上下文,以便我可以使用如下辅助方法来装饰它:
foreach (var car in allCars)
Console.WriteLine(car.GetOwner().Lastname);
GetOwner() 方法能够自动为下一个数据库重用原始数据上下文,而现在我必须做一些丑陋的事情才能获得相同的效果:
foreach (var car in allCars)
{
car.SetDataContext(carsContext);
Console.WriteLine(car.GetOwner().Lastname);
}
这些信息是否已经可供对象使用,或者我应该尝试制作一个自定义 IQueryable 实现,以便在从集合中检索对象时为我自动分配此信息?
我正在尝试这样做,因为出于性能原因(我有大型数据集),我想将针对数据库的表达式的延迟评估保留为 SQL。
任何建议表示赞赏,谢谢。
编辑:这是简化的示例,例如对原始数据上下文的引用不一定立即可用。