映射实现相同接口的多个类

时间:2012-01-12 11:04:45

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

我有一个实现以下接口的类:

IUser {
    string UserName { get; set; }
}

实现此接口(User)的默认类和接口是在核心库中定义的,理想情况下我不希望修改它。但是我需要为我的用户添加一个额外的属性,因此我添加了一个自定义类,它也实现了IUser接口。我映射了这与我映射User类相同,但附加了字段。但是,如果我试着说:

session.Get<IUser>(1);

它抛出错误:

  

Security.IUser的不明确持久性由多个实现   层次结构:Web.Security.Models.User   Security.Models.User

我可以理解为什么我得到这个,因为NHibernate无法分辨哪个是我喜欢的类型。我想知道是否有可能在映射中提示NHibernate?

我很感激帮助。感谢

1 个答案:

答案 0 :(得分:3)

NHibernate有实体名称的概念

// in UserMap
EntityName("user");

// in SpecialUserMap
EntityName("specialUser");

// then in Query
(IUser)session.Get("user", 1);
// or
(IUser)session.Get("specialUser", 1);