c# - Dapper中的DbContext,DbSet等

标签 c# sql dapper

我正在用dapper实现所有数据访问。
我的第一个想法是使用dapper实现存储库模式。
发件人:http://www.bradoncode.com/blog/2012/12/creating-data-repository-using-dapper.html
然后我将linq表达式添加到dapper sqlbuilder中以最小化sql,如示例(动态查询)中所示。所以我可以写一些

sqlbuilder.Where(c=>c.Id == 1) or c.Id = myVar

现在我问自己,实现类似于dbcontext的和dbset并使用linq表达式是否是个好主意。
问题不在于实现一个完整的dbset或dbcontext。但只是一些看起来很复杂的东西。
只需一个初始化连接的dbcontext和使用dapper查询表的多个dbset,以及使用dapper sqlbuilder基于给定链接表达式“生成”sql的iqueryable实现。
在阅读了一些代码并与实体框架进行比较之后,我认为这是浪费时间,因为实体框架已经做到了。
但是使用dapper,您可以控制生成的sql,并且它总是使用相同的模板。
在开始(浪费时间)之前,我想知道这是不是一个好主意。
编辑:很多评论说sqlbuider不是一件好事,那么为什么它在dapper项目中可用呢?

最佳答案

就我个人而言,这是dapper图书馆试图提供的核心之外的东西。这个想法是有价值的,但我担心,当你这么做的时候,你基本上只是重新实现了linq to sql。有一种更简单的方法:只需使用linq to sql。DPAPER通常非常高兴地填充L2S模型——这基本上是我们(DePror作者)如何使用它(并继续使用它)来对抗我们先前存在的L2S代码库。它也将类似于ef等。
不过,如果你真的想把工作做完,我相信你可以在dapper上写一个库来完成这项工作。似乎已经做了很多工作去做已经存在的事情。

关于c# - Dapper中的DbContext,DbSet等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29433851/

相关文章:

c# - SQL 或平面文件访问哪个更有效?

C# 在 SQL 中编辑行

c# - Dapper 的嵌套 `using` 子句 - 澄清?

c# - 增加 EWS 流媒体订阅连接的生命周期元素

c# - 使用网络应用程序通过机器人主动发送消息

c# - 如何在没有第三方库的情况下在 CF 2.0 中制作透明图像?

c# - 什么是 C# 的 system.datetime.Ticks() 的 python 等价物?

sql - 涉及大表的性能调优 Oracle SQL

c# - 通过 uniqueidentifier 选择后使用 dapper 更新多条记录

c# - 使用 Dapper 多次执行存储过程?