我这里有一个非常简单的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);
}
}
怎么了?
以为您可以执行以下操作,因此在获取对象时不必记住要这样做。
private IList<Permission> permissions;
public IList<Permission> Permissions{
get
{
return permissions.Where(x=>String.IsNullOrEmpty(x.Name));
}
set
{
permissions = value;
}
}