Asp.net mvc UpdateModel+;NHibernateeException“;xxx实例的标识符从x更改为y“;
我正在使用ASP.NETMVC和NHibernateAsp.net mvc UpdateModel+;NHibernateeException“;xxx实例的标识符从x更改为y“;,asp.net-mvc,nhibernate,Asp.net Mvc,Nhibernate,我正在使用ASP.NETMVC和NHibernate public class User { public virtual int Id { get; set; } public virtual string Name { get; set; } public virtual Country Country { get; set; } } public class Country { public virtual int Id { get; set; }
public class User
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual Country Country { get; set; }
}
public class Country
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
我有一个页面可以编辑用户,
有一个下拉列表来选择国家
我正在使用UpdateModel()更新用户。
它适用于User.Name。
它更新User.Country.Id,但不更新User.Country.Name
(因为页面只发送Country.Id)。所以我使用的是:User.Country=countryDao.Get(User.Country.Id)
但当我保存用户时,我有一个NHibernateeException:{“国家/地区实例的标识符从1更改为2”}
我能做什么?错误:
var db = new BaseServices<Supplier>();
Supplier item = db.Get(model.SupplierID);
**TryUpdateModel(item);
item.Locality = new BaseServices<Locality>().Get(model.Locality.LocalityID);**
db.Update(item);
db.SaveChange();
var db=new BaseServices();
供应商项目=db.Get(model.SupplierID);
**TryUpdateModel(项目);
item.Locality=new BaseServices().Get(model.Locality.LocalityID);**
db.更新(项目);
db.SaveChange();
泥浆:
var db = new BaseServices<Supplier>();
Supplier item = db.Get(model.SupplierID);
item.Locality = new BaseServices<Locality>().Get(model.Locality.LocalityID);
TryUpdateModel(item);
db.Update(item);
db.SaveChange();
var db=new BaseServices();
供应商项目=db.Get(model.SupplierID);
item.Locality=new BaseServices().Get(model.Locality.LocalityID);
TryUpdateModel(项目);
db.更新(项目);
db.SaveChange();
错误:
var db = new BaseServices<Supplier>();
Supplier item = db.Get(model.SupplierID);
**TryUpdateModel(item);
item.Locality = new BaseServices<Locality>().Get(model.Locality.LocalityID);**
db.Update(item);
db.SaveChange();
var db=new BaseServices();
供应商项目=db.Get(model.SupplierID);
**TryUpdateModel(项目);
item.Locality=new BaseServices().Get(model.Locality.LocalityID);**
db.更新(项目);
db.SaveChange();
泥浆:
var db = new BaseServices<Supplier>();
Supplier item = db.Get(model.SupplierID);
item.Locality = new BaseServices<Locality>().Get(model.Locality.LocalityID);
TryUpdateModel(item);
db.Update(item);
db.SaveChange();
var db=new BaseServices();
供应商项目=db.Get(model.SupplierID);
item.Locality=new BaseServices().Get(model.Locality.LocalityID);
TryUpdateModel(项目);
db.更新(项目);
db.SaveChange();
如果要保存对引用实体的更改,请设置级联以进行更新。将国家Id道具设置为私人设置;并查看它是否编译。如果要保存对引用实体的更改,请设置级联以更新。将国家Id道具设置为私人设置;看看它是否编译。