0

我有 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时它会抛出异常。非空属性引用空值或瞬态值 SocialDB.NDbModel.TblContent.ArticleType

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

PS。我知道如果首先获取然后更新模型 var item = MvcApplication.CurrentSession.GetContentById(model.Id); item.Content = model.Content.StripHtml(false);

4

2 回答 2

2

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

NH 已经告诉你问题出在哪里

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

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

于 2012-05-14T13:25:37.417 回答
0

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

于 2012-06-07T08:47:11.380 回答