Nhibernate 无法初始化代理-没有会话。请加载并退出

Nhibernate 无法初始化代理-没有会话。请加载并退出,nhibernate,session,Nhibernate,Session,我在hibernate会话中遇到了加载和逐出的问题,下面是代码 public virtual void ClearData(T obj) { using (ISession ses = SessionManager.OpenSession()) { ses.Evict(obj); } } public virtual T Load<T>(object id)

我在hibernate会话中遇到了加载和逐出的问题,下面是代码

        public virtual void ClearData(T obj)
    {

        using (ISession ses = SessionManager.OpenSession())
        {
            ses.Evict(obj);
        }

    }

        public virtual T Load<T>(object id)
    {
        using (ISession ses = SessionManager.OpenSession())
        {
            return (T)ses.Load(typeof(T), id);
        }
    }

我想用load函数加载fir的一些数据,然后用cleardata清除数据,但idk如何做到这一点是基于一些教程的。

你从哪里得到错误

有几件事不太好:

  • 您正在为一个与任何nhibernate会话(您刚刚创建的会话)无关的对象调用execute(第一次)。逐出用于将对象从会话中分离,但只有在使用该会话加载对象时才有意义

  • 每次操作都要创建一个会话,这不是推荐的方式。在一个会话中加载对象,然后在另一个会话中尝试将其逐出,这是不可能的


您从哪里得到错误

有几件事不太好:

  • 您正在为一个与任何nhibernate会话(您刚刚创建的会话)无关的对象调用execute(第一次)。逐出用于将对象从会话中分离,但只有在使用该会话加载对象时才有意义

  • 每次操作都要创建一个会话,这不是推荐的方式。在一个会话中加载对象,然后在另一个会话中尝试将其逐出,这是不可能的


嗯,你能告诉我如何更改我的会话管理器以防止出现千次情况吗?错误总是在调用时退出或加载。您需要更改方法以获取会话。只有在没有创建的情况下,才能创建一个新的。您还需要一个方法来关闭会话。我建议您使用来自的会话管理器,或者您可以帮助我在我的示例中编写一个会话管理器吗?关于代码项目的文章非常好。我强烈建议你去看看。在我学习nhibernate的早期,它是我的参考资料。嗯,你能告诉我如何改变我的课程设置,以防止出现千种情况吗?错误总是在调用时退出或加载。您需要更改方法以获取会话。只有在没有创建的情况下,才能创建一个新的。您还需要一个方法来关闭会话。我建议您使用来自的会话管理器,或者您可以帮助我在我的示例中编写一个会话管理器吗?关于代码项目的文章非常好。我强烈建议你去看看。这是我早年学习nhibernate时的参考资料。
            Firmy fir = new Firmy();
        fir.ClearData(fir);
        var yol = fir.Load<Firmy>(6);
        Response.Write("<br/><br/><br/> TEST get");
        Response.Write(yol.NazwaFirmy);
        Response.Write("<br/><br/><br/> TEST EVI");
        fir.ClearData(yol);
        Response.Write(yol.NazwaFirmy);
    public  class SessionManager
{
    #region Class Member Declarations
    private static readonly ISessionFactory _sessionFactory;
    private static readonly Configuration _configuration;
    #endregion
    static SessionManager()
    {
        _configuration = new Configuration();
        _configuration.Configure();
        _configuration.AddAssembly(typeof(SessionManager).Assembly);
        _sessionFactory = _configuration.BuildSessionFactory();
    }


    public static ISession OpenSession()
    {
        return _sessionFactory.OpenSession();
    }
    #region Class Property Declarations

    public static ISessionFactory SessionFactory
    {
        get { return _sessionFactory; }
    }
    #endregion
}