Skip to content

一款简单的ORM,简单易用,开发成本极低,该orm支持.net 4.0以上版本,支持多数据库,Oracle、Mysql、Sqlite、Sqlserver、Sqlserver2000,对于oracle本地无需安装客户端,效率比Dapper快或者相当,支持多数据库,DDD聚合根,多结果集,支持事务、分页,支持强类型和无类型仓储,使用方式极简单,里面包含有事例,可以提出任何意见!联系方式-QQ:531488869,邮箱:[email protected]

Notifications You must be signed in to change notification settings

wulinacha/SimpleOrm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

=====================================================

SimpleOrm使用方法

第一步获取连接;第二步注册全局数据提供者,可以注册多个数据库提供者,可以在需要使用不同的数据库来完成任务,但必须利用已注册的连接字符串实例化不同的DB上下文,此部分最好放在全局中;第三步创建DB上下文,不同数据库对应不同DB上下文;第四步DB上下文工厂方法实例化SimpleClient客户端对象,然后就可以使用了,代码如下

ProviderFactory.RegisterProviderFactory(connectionString, DateProvider.SqlServer);//注册工厂建议放在全局处
DbContext context = new DbContext(connectionString);
StoreSimpleClient<tb_User> client = context.CreateStoreSimpleClient<tb_User>();
var result=client.Query<tb_User>(sql, new { }).FirstOrDefault();//查询数据

支持强类型和无类型

创建SimpleClient对象内置封装多组操作方法,SimpleClient支持强类型和无类型,由DB上下文创建,使用强类型和无类型属于同一个DB上下文,那么可以在同一个事务中使用两个不同类型的Client,创建方法如下:

var nonClient = context.CreateNonSimpleClient();//无类型
StoreSimpleClient<tb_User> client = context.CreateStoreSimpleClient<tb_User>();//强类型

支持部分更新

client.UpdatePart(e => new tb_User() { name = "123", mobile = "15989027156" }, a => a.name == "cxb");

支持系统事务

系统事务的支持相当简单,只需要显式标志开始和结束即可,也可以根据需要设置事务隔离级别,默认为ReadCommitted读已提交(不可重复度),可以换成其他级别防止不可重复读、幻读;DB上下文标识事务开始和结束,中间增删改语句;

context.CreateTransaction();
client.Insert(new tb_User() { mobile = "15989027256", name = "bosco", password = "123456", sex = 1, roleid = 1 });
client.Update(new tb_User { mobile = "15989027255" }, e => e.name == "cxb");
context.CommitTransaction();

支持分页

这里的分页返回类型为PageList,里面包含PageIndex页面、PageSize页大小、rowCount数据总数、Itemes数据列表(Item是List类型),满足一般的需要;

 int pageindex = 1;
 int pagesize = 100;
 var nonPagelist = nonClient.GetPageList<UserInfo>(e =>true, pageindex, pagesize);
 var pagelist = client.GetPageList(e => true, pageindex, pagesize);

支持动态SQL查询操作

支持动态SQL,支持匿名参数,返回的是List类型,如果想返回单条数据,可以使用QueryFirst方法,将返回类型T,使用QuerySingle方法,就算结果集有多条也只返回一条。

var result = client.Query<tb_User>("select * from tb_User", new { });
var resultSingle = client.QuerySingle<tb_User>("select * from tb_User", new { });

支持DDD-领域模型聚合

DDD中划分聚合和聚合根之后,这里支持动态SQL执行返回结果集后,自定义将聚合关联到聚合根,假设角色是聚合根,用户是它的聚合,当然现实中是不可能的,这里只是假设,方法如下:

tb_Role roles=new tb_Role();
client.Query<tb_Role, tb_UserX, tb_Role>("select * from tb_User u left join tb_Role r on u.roleid=r.rid", (tb_Role, tb_UserX) =>
            {
                if (tb_Role.rid != roles.rid) roles = tb_Role;
                roles.UserList.Add(tb_UserX);
                return roles;
            });

支持多结果集

使用QueryMultiple方法,返回多结果集对象QueryReader,通过QueryReader对象可以获取多个结果集,免去多次执行查询方法的麻烦,代码如下:

QueryReader reader=client.QueryMultiple("select * from tb_User;select * from tb_Role");
List<tb_User> ReadUserList = reader.ReadList<tb_User>().ToList();
List<tb_Role> ReadRoleList = reader.ReadList<tb_Role>().ToList();

发展方向,下一版本将支持动态类型和linq方法扩展、支持.net core

About

一款简单的ORM,简单易用,开发成本极低,该orm支持.net 4.0以上版本,支持多数据库,Oracle、Mysql、Sqlite、Sqlserver、Sqlserver2000,对于oracle本地无需安装客户端,效率比Dapper快或者相当,支持多数据库,DDD聚合根,多结果集,支持事务、分页,支持强类型和无类型仓储,使用方式极简单,里面包含有事例,可以提出任何意见!联系方式-QQ:531488869,邮箱:[email protected]

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages