我有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);
答案 0 :(得分:2)
DynamicUpdate仅用于更新,不插入新对象。
NH已经在告诉你问题是什么了
not-null属性引用null或transient值SocialDB.NDbModel.TblContent.ArticleType
在保存之前将ArticleType属性设置为某个值。
答案 1 :(得分:0)
通常它在EF中起作用,使用动态更新需要选择项目并更新字段然后将其推送到数据库,这样它只会更新已修改的字段。