假设我有两个班级:
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.如何解决我的问题?
答案 0 :(得分:3)
我认为你最好制作一个继承树,其中A和B都来自一个公共(抽象)基类型。然后NHibernate可以通过discriminator column进行区分。
当然,您的数据模型应该适应这种情况,因此我希望您的模型不会以任何方式规定。