【问题标题】:Dapper Object State trackingDapper 对象状态跟踪
【发布时间】:2017-07-10 18:29:50
【问题描述】:

一些背景: 我正在编写一个基于 Winforms 的 LOB 应用程序,并且已经阅读了很多对数据表、数据集、表适配器等的“仇恨”。我不是 OR\M 的忠实粉丝,但发现 dapper 很棒。不用写ADO就能得到纯ADO的速度。

问题: 我需要维护对象状态以了解它是插入、更新还是删除。

你会怎么做呢?当按下某些按钮时,您在表单中设置的对象的枚举字段可能是?

非常感谢任何想法!

【问题讨论】:

  • 为什么不拥有两个属性:IsDeletedIsModified。您会知道它是一个新的 (INSERT) 对象,因为它还没有主键。

标签: c# winforms dapper


【解决方案1】:

除了上面来自@maccettura 的 cmets,我会考虑使用额外的 Dapper 扩展 - Dapper.Contrib

Dapper.Contrib 包含许多用于插入的辅助方法, 获取、更新和删除记录。

您可以通过约定或属性进行设置。

【讨论】:

  • 我查看了 contrib 的自动更改跟踪,但没有看到任何方法来控制神奇的插入、更新、删除方法。我希望它们由存储的过程驱动。
  • 控制是什么意思?它支持插入、更新和删除——它有明确的方法。当您插入和更新时,它会设置密钥。
  • 例如 .Update() 正在生成一个更新语句并在我无法控制的幕后执行它。我不需要自动生成的 sql,只需更改跟踪即可知道要调用我自己的存储过程。
  • 明白。好吧,Dapper 是开源的。您可以下载 contrib 并将其修改为使用您的存储过程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-16
  • 2011-11-14
  • 2017-11-08
相关资源
最近更新 更多