1)为什么是Dapper
EF学习成本太高了,研究了很久,还是没有搞懂它的更新类之后如何更新到数据库中。
Linq to sql这个用起来还不错,问题是有点担心如果连接Mysql就死翘翘了。
正好看到这边文章<<5年后,我们为什么要从Entity Framework转到Dapper工具>>,觉得可以尝试一下。
基本操作教程看这儿<<Dapper学习笔记>>,这个博主只有这一个题材。
2)不支持版本
我们现在使用Framework 4比较多,在VS2015下面直接使用NuGet安装Dapper,竟然报告Framework版本太低,不支持.....
找啊找,找到网上说到直接使用Dapper.cs文件即可,我相信了,使用了一个6200行左右的Dapper.cs文件就OK了。
3)无法ToList
很简单的一句查询全表内容如下,结果在ToList()的时候报错。
string query = "SELECT * FROM TestType";
List<TestType> types= conn.Query<TestType>(query).ToList();
仔细在网上找,也没人提到这个问题。
后来突然想到是不是什么没有引用到,加了下面的代码,就解决了.
using System.Linq;
4)存储过程返回值的问题
存储过程的功能是很简单的插入需求:如果当前用户没有权限,返回-1,如果关键字重复,就返回-2,如果关键字不存在,那么插入一条,并返回递增ID。
开始的时候,准备用“select -1”,但是 int count =conn.Execute("Proc_1”,...) 每次返回都是"-1"。直接执行存储过程返回-2,但是count还是-1。
后来看到别人的例子,才知道有2种解决方式,一种就是直接用 conn.Query<Int>("Proc_1”,...) 来得到返回的列表。
另外一种,就不用select -1 而采用 return -1,取值的时候使用加参数的方法来实现:
param.Add("@res", 0, DbType.Int32, ParameterDirection.ReturnValue);
conn.Execute("Proc_1”,...)
int count = param.Get<int>("@res");
于是,天下太平了。