Orm 简洁的彩虹VS简洁的设计
有人能解释一下整洁的彩虹与整洁的设计之间的区别吗Orm 简洁的彩虹VS简洁的设计,orm,dapper,dapper-rainbow,Orm,Dapper,Dapper Rainbow,有人能解释一下整洁的彩虹与整洁的设计之间的区别吗 我的意思是什么时候使用Dapper.Contrib的SqlMapperExtensions.cs,什么时候应该使用Dapper.Rainbow?山姆在他的帖子中详细描述了两者的区别 基本上,这是通常的非一刀切的答案,由我们根据您的需要决定采用哪种方法: 除了Rainbow(用于CRUD)之外,您还可以选择另外两种API(用于CRUD) Dapper.Contrib和Dapper Extensions。 我不认为“一刀切”是万能的。取决于你的问题和
我的意思是什么时候使用Dapper.Contrib的SqlMapperExtensions.cs,什么时候应该使用Dapper.Rainbow?山姆在他的帖子中详细描述了两者的区别 基本上,这是通常的非一刀切的答案,由我们根据您的需要决定采用哪种方法: 除了Rainbow(用于CRUD)之外,您还可以选择另外两种API(用于CRUD) Dapper.Contrib和Dapper Extensions。 我不认为“一刀切”是万能的。取决于你的问题和 首选项可能有一个最适合您的API。我试着 介绍一些选项。解决这个问题没有什么好办法 世界上的每一个问题
我使用Dapper已经有一段时间了,我一直想知道这些和项目都是关于我自己的。经过一点代码审查,以下是我对其用法的看法: 衣冠楚楚 Contrib在IDbConnection接口上为基本CRUD操作提供了一组扩展方法:
- 得到
- 插入
- 更新
- 删除
- 得到
- 插入
- 更新
- 删除
- 如果希望能够跟踪实体中的更改,请使用Contrib
- 当您想使用标准ADO.NET方法时,请使用Rainbow
从文中引用@anthonyv: 除了Rainbow(用于CRUD)之外,您还可以选择另外两种API(用于CRUD) Dapper.Contrib和Dapper Extensions。 我不认为“一刀切”是万能的。取决于你的问题和 首选项可能有一个最适合您的API。我试着 介绍一些选项。解决这个问题没有什么好办法 世界上的每一个问题 我怀疑Sam在上面的引用和相关博客文章中试图传达的是:您的场景可能需要大量定制映射(使用vanilla-Dapper),或者可能需要跟踪实体更改(使用Contrib),或者您可能有常见的使用场景(使用Rainbow),或者您可能希望使用所有这些场景的组合。甚至不用整洁的衣服。YMMV.描述了几种CRUD-Dapper扩展库之间的差异:
- (自动更改跟踪-仅当脏或不脏时,自定义映射的属性,无复合键支持,无手动键支持)
- (使用Snapshotter进行手动更改跟踪,自定义映射的属性,无复合键支持,无手动键支持)
- (无更改跟踪,用于自定义映射的流畅配置,支持复合键,支持手动键规范),还包括用于简单查询的谓词系统(注意:已弃用-不支持最新的Dapper版本或.NET core)
- (无更改跟踪、自定义映射属性、无复合密钥支持、支持手动密钥规范),还包括筛选/分页帮助程序、异步支持、自动POCO类生成(通过T4)
我看不出萨姆在他的帖子中描述了这种差异。他描述了Dapper.Rainbow,然后提到还有Dapper.Contrib。但是这两种实现之间的实际区别是什么呢?嗨!有没有办法使用Dapper.Contrib获取跟踪数据?例如,我希望在对数据库执行更新之前,检查已更改字段中的“旧”和“新”值。谢谢从我在截至2017年11月的报告中看到的情况来看,Dapper Contrib只有一个
IProxy.IsDirty
标志,如果修改了“跟踪”对象的任何属性,就会设置该标志。因此,Update
所做的唯一事情就是检查IsDirty
是否为true
,然后更新所有列。Dapper。彩虹“Snapshotter”可能是您正在寻找的工具。我已经尝试过Snapshotter,但我想用Dapper做一些事情。使用Snapshotter,我必须创建逻辑来比较更改的字段等。谢谢。恳求