我有一个实现以下接口的类:
IUser {
string UserName { get; set; }
}
实现此接口(User)的默认类和接口是在核心库中定义的,理想情况下我不希望修改它。但是我需要为我的用户添加一个额外的属性,因此我添加了一个自定义类,它也实现了IUser接口。我映射了这与我映射User类相同,但附加了字段。但是,如果我试着说:
session.Get<IUser>(1);
它抛出错误:
Security.IUser的不明确持久性由多个实现 层次结构:Web.Security.Models.User Security.Models.User
我可以理解为什么我得到这个,因为NHibernate无法分辨哪个是我喜欢的类型。我想知道是否有可能在映射中提示NHibernate?
我很感激帮助。感谢
答案 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);