UpdateModel + NHibernateException“xxx实例的标识符从x更改为y”

时间:2011-06-14 19:35:53

标签: asp.net-mvc nhibernate

我正在使用带有NHibernate的ASP.NET MVC

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) 但是当我保存用户时我有一个NHibernateException:{“国家实例的标识符从1改为2”}}

我能做什么?

1 个答案:

答案 0 :(得分:1)

错误:

        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<Supplier>();
        Supplier item = db.Get(model.SupplierID);

        item.Locality = new BaseServices<Locality>().Get(model.Locality.LocalityID);
        TryUpdateModel(item);
        db.Update(item);
        db.SaveChange();