问题描述
我在Direct Class中使用该集合,我想将Transformer转换为DTO Class,但我不知道该怎么做。
Class Employee
{
public int ID { get; set; }
public string Name { get; set; }
public string Gender { get; set; }
public int Salary { get; set; }
public ICollection<Address> Addresses {get; set}
public ICollection<Contact> Family {get; set}
}
Class EmployeeDTO
{
public int ID { get; set; }
public string Name { get; set; }
public ICollection<Contact> Family {get; set}
}
Class Contact
{
public int ID { get; set; }
public string Name { get; set; }
public string Relationship {get; set}
public int Age {get; set}
}
我用NHibernate编写了一些示例代码
(using (var transaction = TransactionsFactory.CreateTransactionScope())
{
var s = transaction .GetSession();
var criteria = DetachedCriteria.For<Employee>();
criteria.Add(Restrictions.Eq("Salary",1000));
criteria.Add(Restrictions.Eq("Gender","Female"));
var result = criteria.GetExecutableCriteria(s).List<Employee>().ToList();
}
当前,结果员工拥有有关“地址和家庭联系人”列表的所有信息。
现在我想让Transformer使用EmployeeDTO。
(using (var transaction = TransactionsFactory.CreateTransactionScope())
{
var s = transaction .GetSession();
var criteria = DetachedCriteria.For<Employee>();
criteria.Add(Restrictions.Eq("Salary","Female"));
criteria.setprojection(
projections.projectionlist()
.add(projections.groupproperty("ID","ID")
.add(projections.groupproperty("Name"),"Name"))
.add(projections.groupproperty("Family"),"Family"))
);
criteria.SetResultTransformer(Transformers.AliasToBean(typeof(EmployeeDTO)));
var result = criteria.GetExecutableCriteria(s).List<EmployeeDTO>().ToList();
}
我收到错误消息,因为Family是对象的列表集合。 我尝试研究如何添加Property ICollection 2天,但无法解决。 您是否应该帮助我确定对ICollection Family的映射?我的项目使用的旧技术是NHibernate DetachedCriteria。 请帮帮我。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)