基于.NET C#的 sqlite 数据库 ORM 【Easyliter】

 

因为工作原因经常用到SQLITE数据库,但又找不到好用的ORM所以自个整理了一个简单好用的轻量极ORM框架:Easyliter

 

功能介绍:

1、支持SQL语句操作

2、支持 List<T>和DataTable两种返回格式

3、支持拉姆达表达示进行数据查询和分页

4、内置创建实体类函数

5、依赖于 System.Data.SQLite

使用方法如下:

 

using Sqlite.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Easyliter;
namespace test
{
    class Program
    {
        static void Main(string[] args)
        {

            var connstr = "DataSource=" + System.AppDomain.CurrentDomain.BaseDirectory + "mapping.sqllite";

            //reference System.Data.SQLite
            //引用 System.Data.SQLite
            Client e = new Client(connstr);

            //Generate entity classes from a database
            //从数据库生成实体类
            //CreateClassFile(e);

            //Delete operation
            //删除操作
            DeleteData(e);

            //update operation
            //更新操作
            UpdateData(e);

            //insert operation
            //插入数据
            InsertData(e);

            //Search operation
            //查询操作
            Search(e);

            //基本操作
            //Basic operation
            BasicOperation(e);
        }




        //search operation
        //查询操作
        private static void Search(Client e)
        {
            ////By sql
            List<Product> list = e.Select<Product>("select * from product where  id>@num", new { num = 100 });

            //No parameter
            List<Category> list2 = e.Select<Category>();

            //Single parameter
            List<Product> list3 = e.Select<Product>(x => x.id > 200);

            //Multiple parameter
            List<Product> list4 = e.Select<Product>(x => x.id > 200,
                                                    x => x.sku == "skx" || x.sku == null);
            //By page
            int count = 0;
            List<Product> list5 = e.SelectPage<Product>(1, 10, ref count, " id  desc",
                                            x => x.id > 10,//条件1
                                            x => true);//条件2 ...条件N


            //Query extenions
            var extObj = e.Query<Product>().Where(x => x.id > 10).Where(x => x.id > 2).Select("id,sku")
                .OrderBy(El_Sort.asc, "id")
                .OrderBy(El_Sort.desc, "sku").Take(100);

            //get list
            var list6 = extObj.ToList();

            //get dataTable
            var dataTable = extObj.ToDataTable();

            //get single
            int num = 500;
            var item = e.Query<Product>().Where(c=>c.id==num).Single();

            //get first
            var first = extObj.First();

            //get sql
            string sql = extObj.ToSql();

            //left join
            List<V_Product> VProductList = e.Query<Product>()
                .Join<Product, Category>(false /* true is  inner join*/ ) 
                .On(" Product.category_id=Category.id ")
                .OrderBy(El_Sort.desc, " Product.id")
                .Select("Product.*,Category.name as category_name").JoinWhere("Product.id>300").ToNewList<Product, V_Product>();

            //left join
            string VProductSql = e.Query<Product>()
                 .Join<Product, Category>(false /* true is  inner join*/ )
                 .On(" Product.category_id=Category.id ")
                 .OrderBy(El_Sort.desc, " Product.id")
                 .Select("Product.*,Category.name as category_name").JoinWhere("Product.id>300").ToSql();
        }


        //insert operation
        //插入数据
        private static void InsertData(Client e)
        {
            //添加
            Product p = new Product()
            {
                category_id = 2,
                sku = "sku",
                title = "title"
            };
            e.Insert<Product>(p);
        }


        //update operation
        //更新操作
        private static void UpdateData(Client e)
        {
            e.Update<Product>(new { sku = "AGA123101", category_id = 1 } /*update columns*/, new { id = 434 }/*where columns*/);
        }


        //Delete operation
        //删除操作
        private static void DeleteData(Client e)
        {
            e.Delete<Product>(100);//primary key
            e.Delete<Product>(new int[] { 1, 2, 3 });
        }

        //Generate entity classes from a database
        //从数据库生成实体类
        private static void CreateClassFile(Client e)
        {
            //by database
            var createCalss1 = e.CreateClass("Sqlite.Model"/*命名空间*/, @"D:\TFS\EmailBackup\Easyliter\Test\model"/*路径*/);

            
            //by sql
            var createCalss2 = e.CreateClassBySql("Sqlite.Model", @"D:\TFS\EmailBackup\Easyliter\Test\model1", "viewproduct", "select id,sku from product ");
        }

        //基本操作
        //Basic operation
        private static void BasicOperation(Client e)
        {
            var dt = e.GetDataTable("select * from product");
            var intVal = e.GetInt("select count(*) from product");
            var stringVal = e.GetString("select sku from product where id=500 ");
            //e.ExecuteNonQuery("inset into ..");
        }
    }
}

 

 

源码地址:http://git.oschina.net/sunkaixuan/easyliter

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VB.NET是一种面向对象的编程语言,可以轻松地操作各种类型的数据库,其中包括SQLite数据库SQLite是一种开源的关系型数据库,它非常流行,因为它是轻巧且易于使用。 在VB.NET中,可以使用SQLite.NET提供的SQLiteDataAdapter和SQLiteCommand对象来连接和操作SQLite数据库。具体步骤如下: 1.打开VB.NET开发环境,创建一个新的VB.NET项目; 2.在“工具”菜单下选择“NuGet包管理器”,在弹出的窗口中搜索“System.Data.SQLite”,并下载并安装该依赖项; 3.在VB.NET项目中添加一个引用“System.Data.SQLite”,并导入命名空间“System.Data.SQLite”; 4.创建一个SQLiteConnection对象,将连接字符串传递给它,以便连接到SQLite数据库; Dim connection As New SQLiteConnection("Data Source=pathToDatabase.db") 5.创建一个SQLiteCommand对象,可用于执行SQL命令; Dim command As New SQLiteCommand("SELECT * FROM tablename", connection) 6.使用DataAdapter对象读取和写入数据。可以使用DataAdapter的Fill方法填充DataTable(或DataSet),也可以使用DataAdapter的Update方法将更改保存回数据库。 Dim adapter As New SQLiteDataAdapter(command) Dim dataTable As New DataTable() adapter.Fill(dataTable) 7.关闭数据库连接。 connection.Close() 通过这些步骤,您可以轻松地使用VB.NET操作SQLite数据库。以SQLite为基础的应用程序可以以高效、可靠的方式存储数据,同时保持数据格式的完整性和一致性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值