流利的Nhibernate和DynamicUpdate

时间:2012-05-09 10:01:19

标签: asp.net-mvc nhibernate fluent-nhibernate

我有NH映射

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)

但是当我调用flush时会抛出异常。 not-null属性引用null或transient值SocialDB.NDbModel.TblContent.ArticleType

问题是为什么?据我所知,动态更新应跟踪哪些属性已更改,并仅更新该值。

PS。我知道如果首先获得更新模型,它的工作原理 var item = MvcApplication.CurrentSession.GetContentById(model.Id); item.Content = model.Content.StripHtml(false);

2 个答案:

答案 0 :(得分:2)

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

NH已经在告诉你问题是什么了

  

not-null属性引用null或transient值SocialDB.NDbModel.TblContent.ArticleType

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

答案 1 :(得分:0)

通常它在EF中起作用,使用动态更新需要选择项目并更新字段然后将其推送到数据库,这样它只会更新已修改的字段。