gpt4 book ai didi

c# - 为什么将 "Change Tracking of fields"添加到 Dapper 是好主意还是坏主意?

转载 作者:行者123 更新时间:2023-12-04 17:26:11 35 4
gpt4 key购买 nike

我们正在使用 DapperDapper.Contrib在我们的应用程序中。我们选择Dapper因为它更快,而且由于重载,速度对我们来说就是一切。现在看来 “更改字段跟踪”对我们至关重要。现在 Dapper.Contrib创建 update始终设置所有字段的查询,这样的查询使它们变慢。一些表现在有大约 30 列,完全更新这些表中的行效率非常低。
如我所见 Dapper.ContribChange tracking per object , 但是 Change tracking per field没有介绍给图书馆。
我非常仔细地进行了研究,发现在该领域没有进行任何工作。那个倒霉的研究让我很困惑。我想听听你的想法:

  • 如果没有实现这样的扩展,那么它可能没有用吗?我在这里缺少什么?
  • 请把你自己放在我的鞋子里。你会怎么做?转移到 EF 或向 Dapper.Contrib 引入“Chnage 跟踪”?
  • 可能添加此类功能会使 Dapper 变慢,这就是该功能尚未实现的原因?
  • 最佳答案

    如果您使用 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/

    35 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com