2010-07-20 149 views
0
 ICriteria iCriteria = DataAccessHelper.GetSession().CreateCriteria(typeof(T)) 
      .Add(Expression.Lt("Id", InitialIndex)) 
      .Add(Expression.Eq("Member", member)) 
      .Add(Expression.Eq("Action.class", typeof(U))) 
      .SetMaxResults(MaxResult) 
      .AddOrder(Order.Desc("Id")); 

我基本上想创建一个标准,可以通过他的实现类来过滤操作对象。但是当我运行时会抛出以下异常。如何过滤嵌套在对象中的对象?

{ “无法解析属性:Action.class的:Classes.MemberAction”}

类MemberAction包含:

public class MemberAction { 

    Int64 Id; 
    Member member; 
    Action action; 
    IDictionary<string,string> Attributes; 
    etc..... 
} 

和集体诉讼的其他4类

基地

回答

0
.Add(Expression.Lt("Id", InitialIndex)) 
.Add(Expression.Eq("Member", member)) 
.CreateAlias("Action", "Action") //here's the magic 
.Add(Expression.Eq("Action.class", typeof(U))) 
.SetMaxResults(MaxResult) 
.AddOrder(Order.Desc("Id")) 

标准查询对隐式别名起作用。他们不会自动取消关系。

添加的行会在投影属性“Action”中创建一个名为“Action”的别名(第二个参数,可以是任何您想命名它的名称)。

下一条语句现在引用由012行“”别名引用的实体的伪属性class

+0

谢谢你,这个作品很棒 – firematta 2010-07-28 14:15:09