Репозиторий без ORM для сохранения графа объектов
-
16-09-2019 - |
Вопрос
Я знаю, что довольно просто создать репозиторий для получения моделей предметной области без ORM (Шаблон репозитория без LINQ или другого ORM?).Однако как насчет сохранения моделей предметной области и ее внутреннего графа объектов?
public class Car: IAggregateRoot, IEntity, ICar
{
public IEnumerable<IWheel> Wheels {get; set;}
}
public class CarRepository
{
public void Save(ICar car)
{
// calls Dao
// update/insert all wheels as required
// update/insert car as required
}
}
Здесь нам нужно заняться отслеживанием изменений и т. д.Как это реализовать?
В моей конкретной реализации я рассматриваю Linq to Sql как Dao.Linq to sql отслеживает изменения, но модели предметной области, которые я создал, — нет.Они являются прямыми POCO и не отображаются напрямую с помощью linq в sql.Все делается с помощью специального DataMapper
public class CarDataMapper : IMapper<LinqData.Car, Domain.ICar>
{
public ICar Map(LinqData.Car linqCar)
{
ICar = new Car () { Wheels = linqCar.Wheels.Select( w => new WheelDataMapper().Map(w));
}
}
Есть ли какой-нибудь простой способ реализовать репозиторий для сохранения графа объектов, не подвергая linqToSql или NHibernate уровню домена?Или я что-то здесь упускаю?
Решение
Я слишком пытаюсь найти решение..
DDD без ORM, возможно ли это..Посмотри на http://solveme.wordpress.com/2009/11/11/ddd-without-any-orm-tool-is-it-possible/