我知道创建存储库来检索没有 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 暴露给域层?或者我在这里错过了什么?