Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 缓存生成的连接太多_C#_Nhibernate_Caching_Fluent Nhibernate - Fatal编程技术网

C# 缓存生成的连接太多

C# 缓存生成的连接太多,c#,nhibernate,caching,fluent-nhibernate,C#,Nhibernate,Caching,Fluent Nhibernate,考虑以下用于构建授权信息缓存的方法。当您有一个上下文用户时,缓存将能够告诉您您对哪些公司等的权限 internal List<UserGroupInfo> BuildUserGroupCache() { // NB! If you remove the ToArray() a lot of duplicate infos will be generated! return Session.Query<UserGroup>()

考虑以下用于构建授权信息缓存的方法。当您有一个上下文用户时,缓存将能够告诉您您对哪些公司等的权限

    internal List<UserGroupInfo> BuildUserGroupCache()
    {
        // NB! If you remove the ToArray() a lot of duplicate infos will be generated!
        return Session.Query<UserGroup>()
            .FetchMany(ug => ug.FunctionGroups).ThenFetchMany(fg => fg.Functions)
            .FetchMany(ug => ug.Companies).ToArray().Select(ug => new UserGroupInfo(ug)).ToList();
    }
为什么这是一个问题?因为当我有很多这样的实体时,结果集将迅速增长,并包含大量不必要的重复数据。冬眠的犀牛有这样的说法

这些的自动映射覆盖如下所示:

        //UserGroup
        mapping.HasManyToMany(x => x.Companies)
            .FetchType.Select()
            .ExtraLazyLoad();
        mapping.HasManyToMany(x => x.FunctionGroups)
            .FetchType.Select();

        //FunctionGroup
        mapping.HasManyToMany(x => x.Functions)
            .FetchType.Select();
我怎样才能改变它,使我不会得到所有这些连接?我想实现的是对每种实体类型的全面选择;UserGroup、FunctionGroup和Function,并让NHibernate根据关系表建立关系;FunctionGroupToUserGroup等

我应该怎么做,或者通过使用HQL或者其他什么来自己做。在这一点上,我对任何建议都持开放态度

        //UserGroup
        mapping.HasManyToMany(x => x.Companies)
            .FetchType.Select()
            .ExtraLazyLoad();
        mapping.HasManyToMany(x => x.FunctionGroups)
            .FetchType.Select();

        //FunctionGroup
        mapping.HasManyToMany(x => x.Functions)
            .FetchType.Select();