我想我在这里之后是如何做到这一点的快速示例。我有流利的nhibernate工作正常。我可以创建没有问题的新记录,并在现有记录中读取没有问题。我遇到的问题是在asp.net用户会话中,以及我如何处理这个事实,即我希望在页面加载之间保持这一点,并且我也想偶尔将它写入数据库。NHibernate - 如何处理用户会话
我试图让工作流程是这样的:
- 用户登录
- NHibernate的获取用户记录
- 用户记录在asp.net会话酿
- NHibernate的会话(我认为)结束
- 应用显示“添加地址”页面的链接
- 用户转到“添加地址”页面
- 用户输入的详细地址
- 用户点击“提交”
- 地址添加到用户对象
- 用户对象写入数据库
当我尝试写用户对象(完整的新地址)回到数据库,我得到一个错误,告诉我用户对象已经与现有会话相关联。下面是我用来让用户退出asp.net会话的代码,添加地址并将其写回数据库。它只是在它点击的地方.SaveOrUpdate事情出错了,地址被完美地添加到对象。
void AddAddress_Click(object sender, EventArgs e)
{
var session = Global.SessionFactory.GetCurrentSession();
User user=(User)HttpContext.Current.Session["User"];
user.AddAddress(txtDescription.Text, txtLine1.Text,
txtLine2.Text, txtTown.Text, txtCounty.Text,
txtPostCode.Text, txtCountry.Text);
session.SaveOrUpdate(user);
session.Flush();
}
请忽略现在这可能是错误的101种方式,我很清楚它。我只想做一些工作来证明NHibernate是这个项目的前进方向,所以它现在会变得有点快速和肮脏。
如果您花费更多时间解释您所做的事,并且不理解NHibernate会话生命周期如何在Web应用程序中工作,将会有所帮助。我不清楚为什么你认为上面的代码应该工作? – 2010-07-29 10:47:57