没有ORM的存储库用于保存对象图

时间:2009-07-16 07:07:38

标签: linq-to-sql ddd-repositories

我知道在没有ORM(Repository Pattern without LINQ or other ORM?)的情况下创建用于检索域模型的Repository非常简单。但是,如何保存域模型及其内部对象图?

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作为Dao处理为Sql。 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));
  }
}

有没有直接的方法来实现Repository来保存对象图而不将linqToSql或NHibernate暴露给域层?或者我在这里遗漏了什么?

1 个答案:

答案 0 :(得分:1)

我太难以找到解决方案..

没有ORM的DDD,是否有可能.. 看http://solveme.wordpress.com/2009/11/11/ddd-without-any-orm-tool-is-it-possible/