流畅的NHibernate - 查询派生类

时间:2011-10-03 09:32:02

标签: c# fluent-nhibernate

假设我有两个班级:

public class A
{
  public virtual int Id { get; set; }
  public virtual Object1 Obj { get; set; }
}

public class B : A
{
  public new virtual Object2 Obj { get; set; }
}

我使用Fluent NHibernate,我为这两个类创建了两个不同的映射。但是,当我尝试在我的存储库中查询A类时,FNH同时找到B类和A类,这两种情况都有意义,因为它们都是A。

示例(此条件将同时查询A和B):

public List<T> GetByName(string name)
{
  return Session.CreateCriteriaOf<A>.Add(Restrictions...);
}

CreateCriteriaOf<A>时,我只想查询A - 而不是B.如何解决我的问题?

1 个答案:

答案 0 :(得分:3)

我认为你最好制作一个继承树,其中A和B都来自一个公共(抽象)基类型。然后NHibernate可以通过discriminator column进行区分。

当然,您的数据模型应该适应这种情况,因此我希望您的模型不会以任何方式规定。