使用自定义过滤器扩展一对多关系

问题描述 投票:1回答:1

我这里有一个非常简单的Fluent NHibernate设置,带有一对多关系设置。像这样的东西:

权限:

 public class Permission
    {
        public virtual GUID Id { get; set; }
        public virtual string Name{ get; set; }
    }

一个用户可以具有多个权限

public class User
    {
        public virtual GUID Id { get; set; }
        public virtual IList<Permission> Permissions{ get; set; } 
    }

无论何时在代码中请求User.Permissions集合,我都需要它仅返回Name不是Null / Empty的权限。

我确信有比记录每次需要返回权限列表时记得写User.Permissions.Where(x=>String.IsNullOrEmpty(x.Name))语句更好的方法。我无法直接使用Where条件修改实体。是否可以使用Fluent Nhibernate创建始终可以返回与我的条件匹配的User.Permissions的扩展类?

我用automapper创建了以下重写类,但由于“对象引用未设置为对象的实例而出错。:

public class UsersOverride : IAutoMappingOverride<User>
    {
        public void Override(AutoMapping<User> mapping)
        {
            mapping.HasMany(x => x.Permissions).Where(x => x.DeletedOn == null);
        }
    }

怎么了?

c# asp.net-mvc nhibernate fluent-nhibernate
1个回答
0
投票

以为您可以执行以下操作,因此在获取对象时不必记住要这样做。

private IList<Permission> permissions;
public IList<Permission> Permissions{ 
    get
    {
        return permissions.Where(x=>String.IsNullOrEmpty(x.Name));
    } 
    set
    {
         permissions = value;
    }
} 
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.