Sim*_*mon 3 .net nhibernate audit many-to-many fluent-nhibernate
我正在使用Fluent NHibernate从.Net实体类生成数据库模式.我有两个类,User并且Permission有多对多关系,Fluent NHibernate正在UsersToPermissions数据库中正确生成联结表.
正如预期的那样,联结表存储主键UserId和PermissionId.我想要的是还有这个表附带的审计信息,如CreatedDate和UpdatedDate.我已经使用NHibernate文档中描述的拦截器在非连接表上实现了这一点.
如何在UsersToPermissions表上实现审计列?
这是不可能直接的,因为关系没有属性.
最简单的方法是将联结表映射为实体,并使用LINQ到对象投影侧面以便于使用.
例如,假设我们调用中间实体UserPermission:
class User
{
// Real relationship, mapped as bag or set with one-to-many UserPermission
protected virtual ICollection<UserPermission> UserPermissions { get; set; }
public virtual IEnumerable<Permission> Permissions
{
get { return from up in UserPermissions select up.Permission; }
}
public void Add(Permission permission)
{
UserPermissions.Add(new UserPermission
{
User = this,
Permission = permission
});
}
}
Run Code Online (Sandbox Code Playgroud)
如果需要,权限可以完全相同.