Я знаю, что довольно просто создать репозиторий для получения моделей доменов без 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 для Sql как Dao. Linq to sql изменяет отслеживание, но созданные мной модели домена - нет. Они являются прямыми POCO и не отображаются напрямую linq to 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));
}
}
Есть ли какой-нибудь прямой способ реализовать Repository для сохранения графа объектов, не подвергая linqToSql или NHibernate уровню домена? Или я что-то здесь упускаю?