我目前正在开发 ASP.NET MVC 应用程序,其中我有一个User
如下实体:
public class User
{
public virtual int Id { get; protected set; }
public virtual string Name { get; protected set; }
public virtual string Role { get; protected set; }
public virtual Location Location { get; protected set; }
}
位置同样简单:
public class Location
{
public virtual string Id { get; protected set; }
public virtual string Building { get; protected set; }
public virtual string City { get; protected set; }
public virtual string Region { get; protected set; }
}
我的复杂性出现了,因为我想User
从 Active Directory 而不是数据库中填充。此外,一些持久化到数据库的类引用用户作为属性。我有一个ADUserRepository
用于检索的,但是当其余的由 NHibernate 管理时,我不知道如何将这些用户集成到我的对象图中。
NHibernate 有没有办法只保留一个 idUser
而不是用户表的外键?我可以将它映射为一个组件来完成这个吗?我还研究过实施IUserType
翻译。这样,它将映射到一个简单的字段,并ADUserRepository
可以放入链中以解析存储的 Id。还是我试图破解一些不太可行的东西?这是我第一次使用 NHibernate,因此我很感激您提供的任何见解或解决方案。谢谢。
更新
看来我最好的解决方案是使用 IUserType 映射用户并注入(最好使用 StructureMap)一个服务,以便在返回之前填充对象。在这种情况下,这里有几个问题涉及该主题,主要表明需要自定义 ByteCodeProvider。为了让 IUserType 采用参数化构造函数,我仍然需要这样做还是在此处进行注释:NHibernate.ByteCode.LinFu.dll For NHibernate 3.2有所作为?