【问题标题】:Adding audit columns to a Fluent NHibernate many-to-many junction table将审计列添加到 Fluent NHibernate 多对多联结表
【发布时间】:2011-04-30 00:49:53
【问题描述】:

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

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

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

【问题讨论】:

    标签: .net nhibernate fluent-nhibernate many-to-many audit


    【解决方案1】:

    这是不可能的,因为关系没有属性。

    最简单的方法是将联结表映射为一个实体,并使用 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
                                });
        }
    }
    

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

    【讨论】:

    • 您能否详细说明如何使用 LINQ-to-objects 投影侧面?
    猜你喜欢
    • 2012-03-07
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    相关资源
    最近更新 更多