我遇到加载问题,并且在休眠会话中逐出这里是代码。
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。
答案 0 :(得分:1)
你在哪里得到错误?
一些不好的事情:
你正在为一个与任何nhibernate会话无关的对象(你刚刚创建它)调用evict(第一次)。 Evict用于从会话中分离对象,但只有在您使用该会话加载对象时才有意义。
您在每次操作时都会创建一个会话,这不是推荐的方法。您使用一个会话加载一个对象,然后尝试在另一个会话中逐出它,这是不可能的。