无法初始化代理 - 没有会话session.LOAD和EVICT

时间:2012-03-21 12:18:13

标签: nhibernate session

我遇到加载问题,并且在休眠会话中逐出这里是代码。

        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);
        }
    }

调用它
            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
}

我想用加载函数加载一些fir的数据然后用cleardata清除数据但是idk如何做这个是基于一些tutroial。

1 个答案:

答案 0 :(得分:1)

你在哪里得到错误?

一些不好的事情:

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

  • 您在每次操作时都会创建一个会话,这不是推荐的方法。您使用一个会话加载一个对象,然后尝试在另一个会话中逐出它,这是不可能的。