【发布时间】:2014-09-05 03:01:19
【问题描述】:
如何使用 NHibernate 投影到类属性中?例如:
[Test]
public void Test()
{
MyClass dto = null;
var test = CurrentSession.CreateCriteria<Contact>()
.Add(Restrictions.Eq("ContactName", "John Smith"))
.SetProjection(Projections.ProjectionList()
.Add(Projections.Property("ContactName").WithAlias(() => dto.SubClass.Name))
.Add(Projections.Property("EmailAddress").WithAlias(() => dto.Email))
)
.SetResultTransformer(Transformers.AliasToBean<MyClass>())
.List<MyClass>();
Assert.That(test[0].SubClass.Name, Is.EqualTo("John Smith"));
}
class MyClass
{
public string Email { get; set; }
public MySubClass SubClass { get; set; }
}
class MySubClass
{
public string Name { get; set; }
}
如您所见,我有一个简单的查询,想将 1 行转换为 1 个对象 - 没有列表但有一个子类。不幸的是,它失败了:
NHibernate.PropertyNotFoundException:在“MyTest+MyClass”类中找不到属性“Name”的设置器
是否可以在没有自定义转换器的情况下实现此行为?
【问题讨论】:
标签: c# nhibernate projection