gpt4 book ai didi

.net - 将审计列添加到 Fluent NHibernate 多对多联结表

转载 作者:行者123 更新时间:2023-12-03 15:52:53 25 4
gpt4 key购买 nike

我正在使用 Fluent NHibernate 从 .Net 实体类生成数据库模式。我有两个具有多对多关系的类 UserPermission,并且 Fluent NHibernate 在数据库中正确生成了一个连接表 UsersToPermissions

正如预期的那样,联结表存储了主键 UserIdPermissionId。我想要的是也有附加到此表的审核信息,例如 CreatedDateUpdatedDate。我已经按照 NHibernate documentation 中所述使用拦截器在非联结表上实现了这一点.

如何在 UsersToPermissions 表上实现审计列?

最佳答案

直接不可能,因为关系没有属性。

最简单的方法是将联结表映射为一个实体,并使用 LINQ-to-objects 投影边以方便使用。

例如,假设我们调用中间实体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
});
}
}

如果需要,权限可以完全相同。

关于.net - 将审计列添加到 Fluent NHibernate 多对多联结表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4011801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com