ORM(Repository Pattern without LINQ or other ORM?)なしでドメインモデルを取得するためのリポジトリを作成するのはかなり簡単です。しかし、ドメインモデルとその内部オブジェクトグラフを保存するのはどうでしょうか?オブジェクトグラフを保存するための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
}
}
ここでは、変更トラッキングなどについて取り上げる必要があります。どのように実装するのですか?
私の具体的な実装では、私はDaoとしてSqlにLinqを扱っています。 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はを公開せずにオブジェクトグラフを保存するリポジトリを実装する任意のまっすぐ進む方法はありカスタムによって行われますか?または私はここに何かを逃していますか?