在 ASP.NET Core 中使用 Dapper 进行更新的更好解决方案
Better solution for updates with Dapper in ASP.NET Core
假设我们有一个具有十个属性的 Book 类型。此类型是数据库中 table 的表示形式。
更新此类类型的最佳解决方案是什么?我使用了存储库模式,其中我获得了采用 Book 类型并更新其所有字段的更新方法。
因此,当我想更新一本书时,我通过数据库中的 ID 获取它,更新我想要的字段(我可以更新 1、2 或其所有字段),然后调用存储库上的更新方法。
相比之下,我的朋友告诉我们应该只更新我们想要的字段,所以例如如果我只想更新字段 bookTitle 我应该在 repo UpdateTitle 等中创建方法
最好的解决办法是什么?老实说,我在 repo update 中看到一种方法,所有字段都比多种方法更新一些 parts/ones 属性要好得多。
Dapper 本身不支持数据库实体的跟踪,有 ORM 支持(例如 Entity Framework)
跟踪允许您将数据库对象加载到模型 class 实例中,一旦这些在代码中更新,您可以将更改保存到数据库中,生成的查询将仅更新更改的字段,如前所述,这Dapper 不支持。
如果您只使用 Dapper,我建议保持简单,保存整个更新的对象,如果您遇到性能问题,请考虑更改该方法。
Dapper 不会为您生成查询。 您 编写查询并将其传递给 Dapper。 Dapper 不会跟踪您的类型。 您 维护更改的轨迹。 Dapper 只是执行您传入的内容,并将结果与您的 type/poco/entity/class 映射(如果适用)。
也就是说,如何更新选定的 fields/columns? 问题超出了范围。
现在谈谈另一个问题——采取什么方法?你提到的两种方法各有利弊。
请记住,early optimization 是万恶之源。 Dapper 很简单;把事情简单化。首先更新整个类型。随着时间的推移,如果您遇到严重的性能问题并且您确定问题是由于更新所有字段引起的,请继续优化查询(或编写新查询)以更新选定的字段。
这将节省您的工作量 — 如果需要,将有助于提高性能 — 将使事情变得简单。
假设我们有一个具有十个属性的 Book 类型。此类型是数据库中 table 的表示形式。
更新此类类型的最佳解决方案是什么?我使用了存储库模式,其中我获得了采用 Book 类型并更新其所有字段的更新方法。
因此,当我想更新一本书时,我通过数据库中的 ID 获取它,更新我想要的字段(我可以更新 1、2 或其所有字段),然后调用存储库上的更新方法。
相比之下,我的朋友告诉我们应该只更新我们想要的字段,所以例如如果我只想更新字段 bookTitle 我应该在 repo UpdateTitle 等中创建方法
最好的解决办法是什么?老实说,我在 repo update 中看到一种方法,所有字段都比多种方法更新一些 parts/ones 属性要好得多。
Dapper 本身不支持数据库实体的跟踪,有 ORM 支持(例如 Entity Framework)
跟踪允许您将数据库对象加载到模型 class 实例中,一旦这些在代码中更新,您可以将更改保存到数据库中,生成的查询将仅更新更改的字段,如前所述,这Dapper 不支持。
如果您只使用 Dapper,我建议保持简单,保存整个更新的对象,如果您遇到性能问题,请考虑更改该方法。
Dapper 不会为您生成查询。 您 编写查询并将其传递给 Dapper。 Dapper 不会跟踪您的类型。 您 维护更改的轨迹。 Dapper 只是执行您传入的内容,并将结果与您的 type/poco/entity/class 映射(如果适用)。
也就是说,如何更新选定的 fields/columns? 问题超出了范围。
现在谈谈另一个问题——采取什么方法?你提到的两种方法各有利弊。
请记住,early optimization 是万恶之源。 Dapper 很简单;把事情简单化。首先更新整个类型。随着时间的推移,如果您遇到严重的性能问题并且您确定问题是由于更新所有字段引起的,请继续优化查询(或编写新查询)以更新选定的字段。
这将节省您的工作量 — 如果需要,将有助于提高性能 — 将使事情变得简单。