我已经使用.NET创建了数据访问层。在任何更新数据库记录的地方,我都使用sql来实现以下目的:
更新客户设置FirstName =:FirstName,LastName =:LastName,Address1 =:Address1,Address2=:Address2,.... etc
这意味着即使只更改了一个字段,记录中的每个字段也会更新。一位同事对此表示质疑,他说我们仅应在字段已更改的情况下更新它,并以带宽为问题- 假设我们有160个字段,然后传递160个字段的数据。我想如果我检查一个值是否已更改,并且纯粹基于实际更改的值生成sql,则可以节省Web服务器和数据库服务器之间的带宽。
现在,在Web服务器和客户端之间,我需要同时传递旧值和新值,因此可能在那儿增加带宽(但是ASP.NET还是已经这样做了,我不确定是否可以将其关闭,因此可能不是问题)。
那么什么是最佳实践?我应该担心更新数据库记录中的所有字段吗?我将如何只更新已更改的字段?
编辑于10月29日添加:有人知道NHibernate的功能吗?也许这是花时间学习如何做到这一点的论点。
过早的优化是万恶之源。
为此,您是否确实存在带宽问题?
以我的经验,根据更改的实现方式,跟踪更改可能需要大量工作(即需要维护大量代码)。有一些优雅的方法,但是我认为除非有证据支持更改,否则您所做的一切都很好。
如果您打算实施某种自定义形式的变更跟踪,那么我当然不会与数据库进行“闲聊”。首次从数据库中提取对象并与之进行比较时,请在本地创建对象的副本。