Уровень данных SubSonic, который возвращает POCO вместо объектов ActiveRecord SubSonic.

StackOverflow https://stackoverflow.com/questions/467344

Вопрос

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

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

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

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

Это было полезно?

Решение 4

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

Другие советы

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

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

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

tableBaseClass="РепозиторийЗапись"

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top