Dapper填坑记

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");

     于是,天下太平了。

 

        

原文地址:https://www.cnblogs.com/wonder223/p/9564478.html