【发布时间】:2013-03-08 17:33:44
【问题描述】:
在我的大多数项目中,我使用 nHibernate + Fluent 映射,最近我开始尝试使用 Dapper,看看是否可以将读取操作移至它。
我遵循 DDD 方法,因此我的域实体没有任何公共设置器。例如:
public class User
{
private int _id;
private string _name;
private IList<Car> _carList;
protected User(){} // Fluent Mapping
public User(string id, string name)
{
// validation
// ...
_id = id;
_name = name;
}
public int Id{ get {return _id;} }
public string Name { get {return _name;} }
public IList<Car> CarList { get {return _carList;}}
}
public class Car
{
private int _id;
private string _brand;
protected Car(){} // Fluent Mapping
public Car(string id, string brand)
{
// validation
// ...
_id = id;
_brand= brand;
}
public int Id{ get {return _id;} }
public string Brand { get {return _brand;} }
}
使用 Fluent nHibernate,我可以显示成员以进行映射:
Id(Reveal.Member<User>("_id")).Column("id");
Map(Reveal.Member<User>("_name")).Column("name");
有没有办法用 Dapper 映射我的域实体?如果有,怎么做?
【问题讨论】:
-
请注意,由 User 类公开的 IList
是一种 DDD 气味,就像 setter 一样:您应该公开一个 IEnumerable ,因为在 aggregate's 状态上的所有操作都应该处理通过commands发送给它。
标签: c# orm domain-driven-design dapper fluent-nhibernate-mapping