我有一个用户对象,它上面有一个Country对象。我在用户映射文件中使用多对一标签来映射:更新多对一的关系
<many-to-one name="Country" column="CountryID" cascade="none"/>
如何更新用户的国家?
目前我的用户界面有一个国家的下拉列表和新国家的ID传递给控制器。控制器然后从该值中设置用户国家的ID。所以:
var user = session.Get<User>(userID);
user.Country.ID = Convert.ToInt32(Request.Form["Country_ID"]);
但是,当我打电话:
session.SaveOrUpdate(user);
我得到一个错误,指出“国家的一个实例的标识由7改为8”。据推测这是因为Country对象被NHibernate标记为脏?我不想更新国家对象,只是用户的ID参考。这样做有可能吗?
感谢, 乔恩
其实你不一定需要nhibernate来检索数据。 ISession的Load和Get之间有一个小的区别。其中一人懒洋洋地工作,另一人立即检索。 – Min 2008-11-06 18:44:12