Bouyei.DbFactory.net 多种数据库统一接口

联合创作 · 2023-09-28 12:09

开发库主要实现功能多个数据库统一接口,CRUD简化快速使用,类似mybatis框架,具体功能如下:

一、

1)、.net 统一数据库接口库,支持 SQL server,DB2,Oracle,MySQL,Postgresql,access,sqlite 等;

2)、支持.net Core 2.0,.net framework,.net standard 2.0+

3)、sql脚本简单Linq条件表达式的CRUD操作

4)、实体映射赋值

5)、单表分页查询

 

二、例子
  1. sql 脚本增删查改生成例子

        //生成简单查询脚本

            ISqlProvider sqlProvider = SqlProvider.CreateProvider();

            //group by 
            string sqlgroupby = sqlProvider.Select<User>().Count().From<User>()
                .Where(x => x.uage == 1).GroupBy<User>().SqlString;

            //function 
            string sqlfun = sqlProvider.Select<User>(new Max("age")).From<User>().Where(x=>x.uage>20).SqlString;

            //order by
            var osql = sqlProvider.Select<User>().From<User>().OrderBy(SortType.Asc, "name").SqlString;

            var dic = new Dictionary<string, object>();
            dic.Add("name", "hellow");
            dic.Add("age", 0);
            dic.Add("score", 1.0);

            //MappedName 测试
            var sqls = sqlProvider.Insert<UserDto>().Values(new UserDto[] { new UserDto() {
                 Pwd="ds",
                  UserName="d"
            } }).SqlString;

            //查询
            var sql = sqlProvider.Select<User>()
                 .From().Where(x => x.id == 1).Top(FactoryType.PostgreSQL, 10).SqlString;

            //修改
            sql = sqlProvider.Update<User>()
                .Set(new User() { uname = "bouyei" })
                .Where<User>(x => x.id == 1 || (x.uname == "b" && x.score == 2)).SqlString;

            //删除
            sql = sqlProvider.Delete()
                .From<User>().Where(x => x.uname == "bouyei").SqlString;

            //插入
            sql = sqlProvider.Insert<User>()
                .Values(new User[] {
                new User() { uname ="hello", uage=12 }
                ,new User() { uname="bouyei",uage=23} }).SqlString;

2、增删查改操作例子

            IAdoProvider dbProvider = AdoProvider.CreateProvider(connectionString, FactoryType.PostgreSQL);
            var ext = dbProvider.Connect(connectionString);

            //原生脚本执行

            var adort = dbProvider.Query(new Parameter()
            {
                CommandText = "select * from public.db_user"
            });
 
            //查询
            var rt= dbProvider.Query<User>(x => x.uage >= 20);

            //单表分页 查询语法
            var takert = dbProvider.PageQuery<User>(x => x.uage == 30,0, 10);

            //更改
            var dic = new Dictionary<string, object>();
            dic.Add("name", "hellow");
            dic.Add("age", 0);
            dic.Add("score", 1.0);
            dbProvider.Update<User>(dic, x => x.id == 1);

            //删除操作

            dbProvider.Delete<User>(x => x.uname == "bouyei");

           //插入
            var users = new User[] {
            new User(){ uname="bouyei", score=100, uage=30 },
            new User(){ uname="八渡", score=10, uage=20 }
            };
            dbProvider.Insert(users);

3、mapper实体,实体对象复制到新对象

             User u = new User() {
                    uname="b",
                      id=1
                };

                User b = new User() {
                     uname="a",
                      id=2
                };

                //u对象定义的变量复制给b对象,条件是只复制name等变量名
                EntityMapper.MapTo(u, b, FilterType.Include, "name");

 

4、实体或服务继承实现基本的增删查改操作无需写sql脚本

  [MappedName("db_user")]
    public class UserDto : BaseMapper<UserDto>
    {
        public string UserName { get; set; }

        [Ignore]
        public string Pwd { get; set; }

    

        public void AddUser(UserDto user)
        {
            base.Insert(user);
        }

        public void DeleteById(string name)
        {
            base.Delete(x => x.UserName == name);
        }

        public void UpdateUser(UserDto dto)
        {
            base.Update(dto, x => x.UserName == "bouyei");
        }

        public List<UserDto> QueryUsers(int page=0,int size=10)
        {
           return base.Select(page, size, x => true);
        }

    }

    public class fc3d:BaseMapper<fc3d>
    {
        public string fname { get; set; }

        public long fcode { get; set; }
    }

    public class BaseMapper<T> : TableMapper<T> where T : class
    {
        public BaseMapper()
        {
            string connstr = "Host=127.0.0.1;Port=5432;User id=postgres;Password=bouyei;Database=postgres;";
            var provider = AdoProvider.CreateProvider(connstr, FactoryType.PostgreSQL);
            Initialized(provider);
        }
    }

浏览 12
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报