我们正在使用 Dapper
和 Dapper.Contrib
在我们的应用程序中。我们选择Dapper
因为它更快,而且由于重载,速度对我们来说就是一切。现在看来 “更改字段跟踪”对我们至关重要。现在 Dapper.Contrib
创建 update
始终设置所有字段的查询,这样的查询使它们变慢。一些表现在有大约 30 列,完全更新这些表中的行效率非常低。
如我所见 Dapper.Contrib
有 Change tracking per object
, 但是 Change tracking per field
没有介绍给图书馆。
我非常仔细地进行了研究,发现在该领域没有进行任何工作。那个倒霉的研究让我很困惑。我想听听你的想法:
最佳答案
如果您使用 Get
,Dapper.Contrib 可以进行更改跟踪和 Update
方法,和你手Update
使用 Get
检索到的相同对象(在对其进行更改后) .
每个字段的更改跟踪是无关紧要的。更改一个字段,您仍然必须编写整个记录。
如果您真的只想更改单个字段(或两个...)而不产生编写整个记录的成本,则必须执行以下操作:
conn.Execute(
@"UPDATE MyTable SET MyField=@myParameter WHERE ID = @id",
new { myParameter = myNewValue, id=myID });
注意:您可能会发现支持按字段更改跟踪 here .它不在 Dapper 中,因为:This isn't a direction we want to go with Dapper. If you want full change tracking or updates for objects I would recommend one of the ORMs that accepts these additional costs associated with change tracking like Entity Framework. It's just not something we want in the core Dapper library. -- Nick Craver
关于c# - 为什么将 "Change Tracking of fields"添加到 Dapper 是好主意还是坏主意?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63254148/