我有一个带有许多属性的模型类,它们使用NHibernate映射到数据库。
如果我想创建一个只用于检索和更新其中一个属性的相同类的轻量级版本,那么NHibernate提供的任何快捷方式或者我只需要使用新的NHibernate映射创建一个新类仅为我感兴趣的一个属性提交文件?
我想这样做的原因是数据库性能,我不希望每次当我知道我只更新一个特定列时检索10个数据。
答案 0 :(得分:2)
使用HQL:
session.CreateQuery("update TheEntity set TheProp = :newValue where id = :id")
.SetParameter("newValue", theValue)
.SetParameter("id", id)
.ExecuteUpdate();
不需要黑客攻击。
答案 1 :(得分:1)
没有任何捷径可供选择。您必须使用它自己的映射映射单独的类。但是你可能会把车推到马前。 NHibernate有很多内置的性能调优,其中最重要的是第一级和第二级缓存,可以缓解您尝试解决的大部分问题。假设您正在使用延迟加载功能,在NHibernate中更新实体上的单个属性是一个相当便宜的事务。
答案 2 :(得分:1)
填充整个对象而不是一个属性的性能损失(几乎在所有情况下)都可以忽略不计。别担心。
答案 3 :(得分:0)
谢谢大家,最后我们已经创建了模型类的缩减版本,我们的dba也很满意。