我有一个类客户端:
public class Client{
public Person Pers { get; set; }
}
我有2个人的孩子班:
public class PersonType1 : Person {...}
public class PersonType2 : Person {...}
现在我加载了一个客户端......我需要获取PersonType1或PersonType2属性..
我试过了:
var _pj = ((PersonType1 ) _client.Pers);
但它不起作用,因为_client.Pers类型是一个代理(Lazy加载为true)......
有办法吗?我在每个PersonType中都有几个属性,因此为每个属性(Person-> PersonType1)创建虚拟/覆盖不是一个好主意......
由于
答案 0 :(得分:2)
您可以尝试急切地获取Pers
属性:
var client = session
.CreateCriteria<Client>()
.CreateCriteria("Pers", JoinType.LeftOuterJoin)
.Add(Expression.IdEq(1))
.UniqueResult<Client>();
var pj = (PersonType1)client.Pers;
答案 1 :(得分:0)
如果在服务器中使用NH,并将对象移动到客户端,则不能使用延迟加载。 NH知道(在服务器中)无法帮助客户端,客户端既没有会话也没有知识如何在需要时获取额外数据。