2012-05-09 119 views
0

我有NH映射流利NHibernate和DynamicUpdate

public class TblContentMap : ClassMap<TblContent> { 

     public TblContentMap() { 
      Table("tbl_content"); 
      DynamicUpdate(); 

      Id(x => x.Id).GeneratedBy.Identity().Column("id"); 
.... 
      Map(x => x.ArticleType).Column("article_type").Not.Nullable(); 

     } 
    } 

然后在我的控制器其映射为

public ActionResult Save(TblContent model) 

但是,当我打电话冲洗它抛出异常。 非空属性引用空值或瞬态值SocialDB.NDbModel.TblContent.ArticleType

问题是为什么?据我了解,动态更新应追踪哪些属性发生了变化并仅更新该值。

PS。我知道这工作,如果首先获得再更新模型 VAR项目= MvcApplication.CurrentSession.GetContentById(model.Id); item.Content = model.Content.StripHtml(假);

回答

0

一般来说它的工作原理,如EF,使用动态更新的需要选择项目和更新区,然后把它推到数据库,所以它会只更新修改的字段。

1

DynamicUpdate仅用于更新,不插入新的对象。

NH已经告诉你问题是什么

非空属性引用null或瞬时值SocialDB.NDbModel.TblContent.ArticleType

设置ArticleType属性为某个值之前保存。