栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

NHibernate不仅保存一个属性

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

NHibernate不仅保存一个属性

根据注释,您要尝试做的是创建一个代理,而无需从DB获取当前状态(使用

session.Load
),然后发出动态更新。

这是行不通的。NHibernate不会记录对属性的单独更改;相反,它:

  • 将被跟踪实体的当前状态与从数据库中检索到的属性值的快照进行比较。
  • 基于此,确定哪些实体是脏的(即具有更改)
  • 它生成SQL更新语句。如果使用
    dynamic-update
    ,它将仅包含修改后的属性。

如果使用

session.Load
,则在访问
Deleted
属性后,NH将从数据库中加载记录。在已跟踪的实体上使用
session.Load
还是
session.Get
session.Update
都是禁止操作。

或者,如果您已经拥有所有订单属性的状态,则可以不加载而进行更新:

var order = GetTheOrderFromMemory();order.Deleted = true;session.Update(order);transaction.Commit();

不会 尊重

dynamic-update
,因为NH没有快照可以与…进行比较。

…这就是为什么HQL是对单个属性进行一次性更新的唯一方法的原因。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/647482.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号