1

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

IUser {
    string UserName { get; set; }
}

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

session.Get<IUser>(1);

它抛出错误:

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

我可以理解为什么我会得到这个,因为 NHibernate 无法判断我首选使用哪种类型。我想知道是否可以在映射中提示 NHibernate 这个?

我会很感激帮助。谢谢

4

1 回答 1

3

NHibernate 有实体名称的概念

// in UserMap
EntityName("user");

// in SpecialUserMap
EntityName("specialUser");

// then in Query
(IUser)session.Get("user", 1);
// or
(IUser)session.Get("specialUser", 1);
于 2012-01-12T12:35:45.980 回答