在我的大多數項目中,我使用nHibernate + Fluent映射,最近我開始使用Dapper來查看是否可以將讀操作移動到它。使用Dapper映射域實體的私有屬性dot網
我遵循DDD方法,所以我的域實體沒有任何公共setter。例如:
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;} }
}
用流利的NHibernate的,我能揭示成員映射:
Id(Reveal.Member<User>("_id")).Column("id");
Map(Reveal.Member<User>("_name")).Column("name");
有沒有辦法來映射我的域實體小巧玲瓏的?如果是這樣,怎麼樣?
請注意,由User類公開的IList是一種DDD異味,就像一個setter:你應該公開IEnumerable ,因爲[aggregate]的所有操作(http://dddcommunity.org/library/ vernon_2011 /)狀態應該通過發送給它的[commands](http://epic.tesio.it/doc/manual/command_query_separation.html)來處理。 –
2013-03-08 22:30:19