我有一个服务我正试图转移到NHibernate。
通过视图上的取消按钮调用服务的Get方法。第一次调用Get方法时(第一次取消更改),取消实际发生并且值返回。
我第二次取消时,它会忽略取消并保留新值?!
private ISession _session;
private ISession GetSession()
{
return _session ?? (_session = _sessionFactory.OpenSession());
}
public MappingCollection Get(string id)
{
var session = GetSession();
var mappingCollection = session.Get<MappingCollection>(id);
return mappingCollection;
}
但是,如果我更改Get(字符串ID)以包含刷新...
public MappingCollection Get(string id)
{
var session = GetSession();
var mappingCollection = session.Get<MappingCollection>(id);
session.Refresh(mappingCollection);
return mappingCollection;
}
一切正常 - 但是看看NHibernate Profiler它会在第一次操作时调用select两次......我知道我可以添加一个bool来查看它是否已经运行,但我希望有更好的方法!
有人可以帮忙吗?感谢
答案 0 :(得分:0)
每次取消尝试都会杀死您的网络代理吗?这听起来像是每个请求一个会话的问题。
第二个版本运行两次应该是有意义的。首先,你得到了这个项目。然后刷新项目。这将调用数据存储来检查更改。