Дозвуковые Deeploads: это поддерживается? - PullRequest
0 голосов
/ 21 апреля 2009

Вполне может быть, что я просто пропускаю правильный язык в этом пространстве, но я ищу определенный функционал в SubSonic. В NetTiers это называлось «DeepLoad». Глубокая загрузка выполняется в базу данных и извлекает много объектов (т.е. извлекает этот OrderDetail и все его LineItems) за один вызов базы данных.

Опять же, я хочу запустить хранилище данных после создания потенциально плотного графа объектов или связанных элементов, заполненных хранилищем данных.

Как мне это сделать в SubSonic и как это называется в SubSonic?

Ответы [ 2 ]

2 голосов
/ 21 апреля 2009

Вы можете сделать это в 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), вы можете сделать это с активной записью, как упоминает Пол, - но она сделает два вызова.

1 голос
/ 21 апреля 2009

Нет активной загрузки, и DeepSave в ActiveRecord вызывает только Сохранить. Вот пример с методом внешнего ключа класса Northwind Order.

[Test]
public void SelectOrderDetails()
{
    Order order = new Order(10250);
    OrderDetailCollection details = order.OrderDetails();
    Assert.IsTrue(details.Count == 3);
}
...