使用Fluent NHibernate进行继承会产生双重结果

时间:2010-11-08 14:15:33

标签: nhibernate fluent

我有以下情况:

public class Login
{
    public virtual int Id { get; set; }
    public virtual string Username { get; set; }
}

public class User : Login
{
    public IList<Account> Accounts { get; set; }
}

如果我有两张地图(ClassMap<Login>ClassMap<User>),则所有查询都会返回双重结果 - 我估计每张地图一张。

有可能避免这种情况吗?我没有鉴别器价值。用户有很多属性,所以我希望能够通过登录获得这些属性的子集。

2 个答案:

答案 0 :(得分:4)

由于用户扩展了登录,因此查询登录默认情况下也会返回用户实例。

为避免这种情况,必须在XML映射中使用polymorphism="explicit"

对于Fluent映射,请使用Polymorphism.Explicit()

答案 1 :(得分:0)

为两个实体LoginUser指定不同的数据表可能会有所帮助,因此您必须明确查询LoginUser,具体取决于您的需求。否则,Diego Mijelshon的回答听起来不错!