Уровень данных SubSonic, который возвращает POCO вместо объектов ActiveRecord SubSonic.
-
19-08-2019 - |
Вопрос
Я хочу использовать 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 классов и запросов к вашей модели.