小言_互联网的博客

SQLite学习——Dapper初识

413人阅读  评论(0)

参考:https://blog.csdn.net/weixin_41732430/article/details/83871216

ORM(Object Relation Mapper)

介绍Dapper之前不得不提及ORM,ORM是什么呢?
从字面理解,O是Object,对象;R是Relation,关系;M是Mapping,映射。所以,用一句话概括就是:ORM是一种对象关系映射的技术。
我们平时所使用的大多数编程模型都是面向对象编程,就是把我们研究的问题抽象出来分解成一个个对象,对象有属性,方法等等,我们操作的是对象。
而我们平时所使用的数据库是关系型数据库,他是从集合论等数学知识发展过来的,他讲究集合,映射,六大范式等等,跟我们的面向对象思想的封装继承多态不同,这两者之间有着根本性的差异。
所以我们就存在一个问题,怎么去调和二者,如果能有一种技术把对象与数据库对应起来,我们编程就会方便许多。于是,ORM应运而生,他就是为了解决对象与数据库之间的差异所产生的一门技术,用他可以把对象与数据库建立一种映射,对于业务层的程序员,他不用管数据库的结构,他只需要专注于他的业务逻辑去操作对象。至于对象怎么去变成元组进入数据库,以及怎么从数据库取数据变成对象,那是ORM自动解决的。
所以,ORM为对象关系映射器,它直接将数据库映射到C#对象。
有很多ORM框架可用,Dapper是其中之一,被称为ORM之王。


Dapper

1、速度快,性能好;
2、更少的代码行
3、对象映射
4、静态对象绑定
5、动态对象绑定
6、易于处理Sql语句
7、易于处理存储过程
8、直接操作IDBConnection类,该类直接向数据库提供平滑性和运行查询,而不是像在EF和ADO.NET中那样使用各种对象传递数据。
9、多个查询支持
10、支持存储过程
11、批量处理数据插入
12、允许基于多个输入获取多个数据


Dapper安装

  • 鼠标右击项目下面的引用选项,进入NuGet,输入Dapper安装。(VS2013可用、VS2010不可用),
    这种方法可能下载的是最新版本的可能编译后会出现如下错误

这时候就可以采用第二种方法:

  • 直接去官网上找
    dapper下载:

https://www.nuget.org/packages/Dapper/
找到一些低版本的去下载(亲测1.40.0可用)

  • 还可以去github下载dapper源码

https://link.jianshu.com/?t=https://github.com/StackExchange/Dapper


编写程序

创建数据库以及写对应的类

  • 用SQLiteStudio3.2.1可视化工具或者coding都可以创建一个db数据库文件

  • 形成的类的属性要和上面创建的数据库相对应
     public class BOOKINFO
    {
        public string user_id { get; set; }
        public string book_id { get; set; }
        public int book_price { get; set; }
        public int user_age { get; set; }
        public string user_habbit { get; set; }
    }

编写读取程序

        private static string LoadConnectString(string id = "F:\\C#联合SQLite学习\\C#DapperSQLite\\WindowsFormsApplication1\\AllCode.db")
        {

            SQLiteConnection dbConnection = new SQLiteConnection();
            SQLiteConnectionStringBuilder dbConnectionstr = new SQLiteConnectionStringBuilder();
            dbConnectionstr.DataSource = id;
            return dbConnectionstr.ToString();
        }
        public static List<BOOKINFO> LoadPeople()
        {
            using (IDbConnection cnn = new SQLiteConnection(LoadConnectString()))
            {
                //cnn.Open();
                var output = cnn.Query<BOOKINFO>("select * from bookinfo", new DynamicParameters());
                foreach (var item in output)
                {
                    string str = "名字:  " + item.user_id + "      书名:   " + item.book_id;
                    MessageBox.Show(str);
                }
                return output.ToList();
            }
        }

程序链接:https://download.csdn.net/download/jidxiaohuo/11798325


学如逆水行舟 不进则退 加油


转载:https://blog.csdn.net/jiDxiaohuo/article/details/101109381
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场