Asp.net mvc UpdateModel+;NHibernateeException“;xxx实例的标识符从x更改为y“;

Asp.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; }

我正在使用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 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道具设置为私人设置;看看它是否编译。