NHibernate ICriteria带一个包

时间:2009-02-13 19:32:48

标签: c# nhibernate

只是一个简单的问题。如果我有2个表连接在具有多对多关系的第3个表中,是否可以在其中一个表和连接表中编写带有表达式的ICriteria?

让我们说映射文件看起来像:

    <bag name ="Bag" table="JoinTable" cascade ="none">
      <key column="Data_ID"/>
      <many-to-many class="Data2" column="Data2_ID"/>
    </bag>

那么可以编写如下的ICriteria吗?

        ICriteria crit = session.CreateCriteria(typeof(Data));
        crit.Add(Expression.Eq("Name", name));
        crit.Add(Expression.Between("Date", startDate, endDate));
        crit.Add(Expression.Eq("Bag", data2IDNumber));

当我尝试这个时,它告诉我我期望的类型是IList,而实际的类型是Bag。

感谢。

1 个答案:

答案 0 :(得分:1)

你应该这样做(我认为)

ICriteria crit = session.CreateCriteria (typeof(Data));
crit.Add (Expression.Eq ("Name", name));
crit.Add (Expression.Between ("Date", startDate, endDate));
crit.CreateAlias ("Bag", "b");
crit.Add (Expression.Eq ("b.Id", data2IDNumber));