很可能我只是在这个领域缺少正确的白话,但我正在寻找 SubSonic 中的特定功能。在 NetTiers 中,它被称为“DeepLoad”。深度负载运行到数据库并在一次数据库调用中获取许多对象(即获取此 OrderDetail 及其所有 LineItems)。
同样,一旦构建了潜在的密集对象图或由数据存储填充的相关项目,我想运行到数据存储。
我如何在 SubSonic 中执行此操作,在 SubSonic 中它叫什么?
您可以在 SubSonic 3.0(尚未发布,但几乎在那里......)中使用 IQueryable 和延迟加载来执行此操作:
var db=new NorthwindDB();
var order=db.Orders.Where(x=>.xID==20).SingleOrDefault();
Assert.Equal(3,order.OrderDetails.Count());
如果您不在 3 上(需要 .net 3.5),您可以使用 Paul 提到的 Active 记录来执行此操作 - 但它会拨打两个电话。
没有预加载,ActiveRecord 中的 DeepSave 只调用 Save。这是 Northwind Order 类外键方法的示例。
[Test]
public void SelectOrderDetails()
{
Order order = new Order(10250);
OrderDetailCollection details = order.OrderDetails();
Assert.IsTrue(details.Count == 3);
}