В большинстве моих проектов я использую nHibernate + Fluent mapping, и недавно я начал играть с Dapper, чтобы узнать, могу ли я переместить операции чтения на него.Сопоставление частных атрибутов объектов домена с Dapper dot net
Я следую подходу 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? Если да, то как?
Обратите внимание, что IList, открытый классом User, является запахом DDD, как и сеттер: вместо этого вы должны выставить IEnumerable , поскольку все операции над [агрегатом] (http://dddcommunity.org/library/ vernon_2011 /) должно выполняться через [команды] (http://epic.tesio.it/doc/manual/command_query_separation.html), отправленные ему. –