当前位置: 首页 > 软件库 > 程序开发 > 常用工具包 >

Bouyei.DbFactory

.net 多种数据库统一接口
授权协议 MIT
开发语言 C# .NET
所属分类 程序开发、 常用工具包
软件类型 开源软件
地区 国产
投 递 者 慕嘉茂
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

开发库主要实现功能多个数据库统一接口,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);
        }
    }

  • Bouyei.DbFactory 项目框架地址  https://gitee.com/bouyei/Bouyei.DbFactory sql 脚本增删查改生成例子 //生成简单查询脚本 ISqlProvider sqlProvider = SqlProvider.CreateProvider(); //group by string sqlgroupby = sqlProvider.Select(

 相关资料
  • 在数据库原理中,关系运算包含 选择、投影、连接 这三种运算。相应的在SQL语句中也有表现,其中Where子句作为选择运算,Select子句作为投影运算,From子句作为连接运算。 连接运算是从两个关系的笛卡尔积中选择属性间满足一定条件的元组,在连接中最常用的是等值连接和自然连接。 等值连接:关系R、S,取两者笛卡尔积中属性值相等的元组,不要求属性相同。比如 R.A=S.B 自然连接(内连接):是一

  • 问题内容: 我有三个表:,,和。 该表包含类别的名称和其类别的ID 。 在包含两列:为这篇文章的ID和该职位的类别的ID。 该表包含有关后多列-如,等 我在网址中有一个名为parent_id的变量,它对应于一个类别。我想列出所有属于parent_id值类别的帖子(而不是类别)。 例如,假设parent_id值为5。每个帖子可能属于ID为20的类别,但该类别属于父类别(其ID为5)。我想列出所有属于

  • 从bugu-mongo 2.11版本开始,支持连接到多个数据库。 在前面的示例代码中,我们都只是连接到一个数据库: //默认的数据库连接 BuguConnection conn = BuguFramework.getInstance().createConnection(); conn.setHost("192.168.0.100"); conn.setPort(27017); conn.setU

  • 在执行应用程序检查后,我的firebase实时数据库在我的unity应用程序中无法工作。在firebase应用程序检查功能之前,它完全可以正常工作。但现在,当我试图保存数据时,它拒绝了我的数据库请求,当我在app check monitor中监视我的实时数据库时,它显示我的请求没有包含app check令牌: 这可能是因为您正在使用旧的firebase SDK,其中应用程序检查位于应用程序内部 我

  • 事务处理 索引

  • 本文向大家介绍11种ASP连接数据库的方法,包括了11种ASP连接数据库的方法的使用技巧和注意事项,需要的朋友参考一下 ASP连接数据库的11种方法——本文总结了使用ASP链接各种数据库的方法: 1.Access数据库的DSN-less连接方法: 2.Access OLE DB连接方法: 3.SQL server连接方法: 4.SQL server OLE DB连接方法: 5.Oracle 连接方

  • 本文向大家介绍Java连接各种数据库的方法,包括了Java连接各种数据库的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java连接各种数据库的方法。分享给大家供大家参考。具体如下: 希望本文所述对大家的java程序设计有所帮助。

  • PHP interbase中的Noob。 我正在做一个项目,我需要将数据保存在两个独立的数据库中。我使用默认的MySQL数据库,而另一个使用firebird。已下载此库 这是我的数据库。配置文件夹中的php。 需要多个数据库的函数 模型 我对create_purchaseorder函数没有问题,但是当我运行“save”函数时,它会给我这个错误 致命错误:调用未定义的函数ibase_connect(