我有一個非常奇怪的問題:NHibernate崩潰時,從Web用戶控件調用。NHibernate崩潰時,ASP.Net中的Web用戶控件調用
我正在使用NHibernate訪問數據庫的ASP.Net(2.0)網頁。
而且我有一個簡單的工廠類訪問表中ProjectInfo列CurrentStepNumber:
public class ProjectEntity
{
private int? _currentStepNumber;
public virtual int? CurrentStepNumber
{
get { return _currentStepNumber; }
set { _currentStepNumber = value; }
}
public static ProjectWizardEntity GetById(int id, bool shouldLock)
{
return RepositoryFactory.ProjectWizardRepository.GetById(id, shouldLock);
}
public static ProjectWizardEntity GetById(int id)
{
return GetById(id, false);
}
public virtual void Save()
{
RepositoryFactory.ProjectWizardRepository.Save(this);
}
public virtual void SaveOrUpdate()
{
RepositoryFactory.ProjectWizardRepository.SaveOrUpdate(this);
}
}
這個類是通過代理類訪問,從而使每次新的值賦給它是刷新到數據庫:
public class DBHelper
{
ProjectEntity _projectEntity;
ProjectEntity GetProjectEntity()
{
if (_projectEntity == null)
_projectEntity = //get or create a new one;
return _projectEntity ;
}
public int? CurrentStepNumber
{
get
{
return (CurrentProjectId > 0) ? CurrentProjectWizardEntity.CurrentStepNumber : 0;
}
set
{
if (CurrentProjectId > 0)
{
CurrentProjectWizardEntity.CurrentStepNumber = value;
CurrentProjectWizardEntity.SaveOrUpdate();
}
}
}
}
現在的問題:
- 當我訪問CurrentStepNumber從Test.aspx的頁面,一切完美
- 當我從中Test.aspx的頁面上它使用的Web用戶控件(test.ascx)閱讀本場還行
- 然而時我試圖在後面的控制(test.ascx)代碼中的值賦給CurrentStepNumber我總是得到一個異常:
NHibernate.NonUniqueObjectException:不同的對象具有相同標識符值已關與會議
其實SaveOrUpdate NHibernate Repository的方法拋出異常。
我找不出什麼可能是這裏的問題,所以任何幫助將不勝感激。
你有一些PostBack測試,以便該對象不被加載兩次? – BuddyJoe 2009-01-28 20:45:45