Уровень данных SubSonic, который возвращает POCO вместо объектов ActiveRecord SubSonic - PullRequest
1 голос
/ 22 января 2009

Я хочу использовать SubSonic (2.2) в приложении, которое я создаю, потому что мне нравится его простота, и он обрабатывает любые типы запросов, которые я могу предвидеть. В то же время я хочу, чтобы верхние уровни моего приложения были отделены от дозвуковых типов. Я хочу вернуть только простые старые объекты C #, а также передать POCO для сохранения.

Но здесь есть одна загвоздка: я хочу, чтобы в моих POCO были загружены свойства Lazy для дочерних коллекций и родительских объектов на основе отношений FK. Я полагаю, что мне нужно каким-то образом поместить объект Subsonic SqlQuery в закрытый элемент моего POCO и использовать его внутренне в геттере для отложенного загруженного свойства.

Любые идеи о том, как реализовать это специально с SubSonic? Кто-нибудь делал это раньше?

Я понимаю, что следующий основной выпуск SubSonic сделает это «из коробки», но это будет через несколько месяцев.

Ответы [ 4 ]

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

Я использую RepositoryRecord в SubSonic, который "в основном" poco. Затем я делаю партиалы для тех классов, которые загружают другой класс при выборе свойства.

Partial Public Class Book

Private _Author as Database.Author 
Property Author() as Database.Author
  Get
     If _Author is nothing then
       ' Load the author class here.
     End if
     return _Author
  End get
  Set
     ....
  End Set
End Property
End Class
1 голос
/ 22 января 2009

Вы можете использовать атрибут:

tableBaseClass = "RepositoryRecord"

Боюсь, я не знаю, как это справляется с отложенной загрузкой. Вы можете увидеть сообщение Роба Конери об этом для более подробной информации.

0 голосов
/ 04 марта 2009

Не мог найти хороший способ сделать это. Subsonic 3 выглядит очень хорошо и решит проблему, но в то же время мы просто выбрали NHibernate .

0 голосов
/ 04 февраля 2009

То, что вы хотите, отсутствует в версии 2.x. Возможно, вам удастся пройти большую часть пути, отредактировав шаблоны (у меня есть примеры лениво загруженных свойств в моем блоге ). Другой вариант - создать ваши pocos, а затем создать классы для сопоставления из сгенерированных SubSonic классов и запросов к вашей модели.

...