流利的Nhiberante子类与同类表相同

时间:2015-11-04 15:03:27

标签: nhibernate fluent-nhibernate fluent-nhibernate-mapping

我有两个班级:

class User {
    public int Id { get;set; }
    public string Name { get; set; }
}

class VerifiedUser : User {
    public ICollection<Verified> { get; set; }
}

我希望NHibernate将VerifiedUserUser视为同一个表,但将它们分开,所以。

Session.Query<User>() //would return a User
Session.Query<VerifiedUser>() //would return a VerifiedUser

这可能还是不受支持?

1 个答案:

答案 0 :(得分:0)

您需要在映射类中使用Fluent Nhiberate实施table-per-hierarchy策略。这些类似于FNH的AutoMapping功能(如果使用)的覆盖,否则映射类是事实上的,您将习惯它们。

类似的东西:

public class UserMappingOverride : IAutoMappingOverride<User>
 {
    public void Override(AutoMapping<User> mapping)
    {                  
        mapping.DiscriminateSubClassesOnColumn("IsVerified").Not.Nullable();
    }
 }

public class VerifiedUserClassMap : SubclassMap<VerfiedUser>
{
    public VerifiedUserClassMap()
    {
        DiscriminatorValue("Yes");
    }
}

回答你的问题,是的,就我记得在这里无所事事而言:Session.QueryOver<VerifiedUser>()因为NHibernate会在鉴别器的where子句中加上