有没有办法推广这种方法

本文关键字:方法 有没有 | 更新日期: 2023-09-27 17:59:29

我需要在我的基本数据访问类中有一个方法,如下所示:

    public virtual void InitializaEntity(T entity, object relatedEntity)
    {
        using (session)
        {
            T mergedEntity = (T)session.Merge(entity);
            NHibernateUtil.Initialize(relatedEntity);
        }
    }

我想将一个相关的对象惰性地初始化为主对象。我可以对每个关系使用下面这样的方法,但我喜欢推广这种方法。

    public Keyword GetKeywordCategoryByKewordId(long id)
    {
        Keyword k = session.Get<Keyword>(id);
        NHibernateUtil.Initialize(k.Categories);
        session.Close();
        return k;
    }

有什么解决办法吗?

有没有办法推广这种方法

我不完全清楚你想要概括什么,但是:

你说你想懒惰地加载它们,但如果你总是立即调用Initialize,那么你还不如关闭懒惰加载。或者,如果你在网络应用程序中,你可以每次请求使用一个会话,忘记必须自己关闭会话,尽情地懒惰加载。