NHibernate ICollection属性转换为DTO属性

问题描述

我在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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...