Insql 国人开发,是一款汲取 Mybatis 优点的.NET ORM 框架。追求简单直观,使用自由灵活等特点。

项目主页:https://rainrcn.github.io/insql

此 ORM 是以 Mybatis 的 Sql 配置方式,以 Dapper 为对象映射的基础上建立。喜欢写 SQL 的同学们肯定会喜欢的。另外因为对象映射使用 Dapper 的关系,所以性能上不用过多担心。

创建项目

模板选择ApiWeb应用程序,如果会自己大家结构选择也是可以的。

在项目上鼠标右键选择管理Nuget程序包,搜索Insql并添加安装,Insql 包自带 SqlServer 数据库连接,如果需要 MySql 数据库,需要另外安装Insql.MySql

使用

打开Startup.cs,在ConfigureServices中加入AddInsql

public void ConfigureServices(IServiceCollection services)
{
services.AddInsql(); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}

Insql 就已经可以开始用了。

在项目下创建Domain目录,并创建UserDbContext.cs UserDbContext.insql.xml UserPo.cs RolePo.cs 文件

UserDbContext.insql.xml 要右键属性选择嵌入式资源

写代码

1. 创建数据库模型类 UserPo.cs RolePo.cs

public class UserPo
{
public string UserId { get; set; } public string UserName { get; set; } public DateTime CreateTime { get; set; }
} public class RolePo
{
public string RoleCode { get; set; } public string RoleName { get; set; } public int RoleOrder { get; set; }
}

2. 创建UseDbContext.insql.xmlSQL 配置

<insql type="InsqlExample.Domain.Context.UserDbContext,InsqlExample" >

  <!--定义UserPo类型数据库字段到对象属性映射-->
<map type="InsqlExample.Domain.Model.UserPo,InsqlExample">
<key name="user_id" to="UserId" />
<column name="user_name" to="UserName" />
<column name="create_time" to="CreateTime" />
</map> <map type="InsqlExample.Domain.Model.RolePo,InsqlExample">
<key name="role_code" to="RoleCode" />
<column name="role_name" to="RoleName" />
<column name="role_order" to="RoleOrder" />
</map> <select id="GetUser">
select * from user_info where user_id = @userId
</select> <insert id="InsertUser">
insert into user_info (user_id,user_name,create_time) value (@UserId,@UserName,@CreateTime)
</insert> <update id="UpdateUser">
update user_info
<set>
<if test="UserName != null">
user_name = @UserName,
</if>
</set>
where user_id = @UserId
</update> <delete id="DeleteUser">
delete from user_info where user_id = @userId
</delete> <select id="GetRoleList">
select * from role_info order by role_order
</select>
</insql>

select,insert,update,delete 分别代表增删改查,可以看到在update中有特殊 xml 元素,可以进项目文档查看详细说明,有 Mybatis 经验的同学自然就理解了

3. 创建UserDbContext数据上下文

public class UserDbContext : DbContext
{
public UserDbContext(DbContextOptions<UserDbContext> options) : base(options)
{
} public UserPo GetUser(string userId)
{
//"GetUser"对应 select上的id,
//第二个查询参数支持 PlainObject和 IDictionary<string,object>两种类型
return this.Query<UserPo>("GetUser", new { userId }).SingleOrDefault();
} public void InsertUser(UserPo user)
{
this.Execute(nameof(InsertUser), user);
} public void UpdateUser(UserPo user)
{
this.Execute(nameof(UpdateUser), user);
} public void DeleteUser(string userId)
{
this.Execute(nameof(DeleteUser), new { userId });
} public IEnumerable<RolePo> GetRoleList()
{
return this.Query<RolePo>("GetRoleList");
}
}

别忘了在Startup.cs中注册 UserDbContext。 命名空间 using Insql;一下

public void ConfigureServices(IServiceCollection services)
{
services.AddInsql(); services.AddInsqlDbContext<UserDbContext>(options =>
{
//这里代表这个上下文使用这个SqlServer数据库
options.UseSqlServer("这里是连接字符串");
}); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}

增删改查这就 OK 了。然后我们可以在 Controller 或者 Service 中直接注入 UserDbContext 来用。

4. 在ValuesController.cs中使用UserDbContext

[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
private readonly UserDbContext dbContext; public ValuesController(UserDbContext dbContext)
{
this.dbContext = dbContext;
} [HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
//查询用户
var user1 = this.dbContext.GetUser("tome"); //增加用户
this.dbContext.InsertUser(new UserPo
{
UserId = Guid.NewGuid().ToString(),
UserName = "tom",
CreateTime = DateTime.Now
}); //查询角色列表
var roleList = this.dbContext.GetRoleList(); //....其他的不演示了 //还可以这样用,通过dbContext直接调用sql,和在DbContext里面写方法一样的
var userJerry = this.dbContext.Query<UserPo>("GetUser", new { userId = "jerry" }); return new string[] { "value1", "value2" };
}
}

行这就完事了。

可以去看看项目文档,支持功能还挺多的。代码生成器也有。

轻量级.NET CORE ORM框架Insql使用教程的更多相关文章

  1. OsharpNS轻量级.net core快速开发框架简明入门教程-从零开始启动Osharp

    OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...

  2. OsharpNS轻量级.net core快速开发框架简明入门教程-Osharp.Redis使用

    OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...

  3. OsharpNS轻量级.net core快速开发框架简明入门教程-代码生成器的使用

    OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...

  4. OsharpNS轻量级.net core快速开发框架简明入门教程-基于Osharp实现自己的业务功能

    OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...

  5. OsharpNS轻量级.net core快速开发框架简明入门教程-Osharp.Hangfire使用

    OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...

  6. OsharpNS轻量级.net core快速开发框架简明入门教程-Osharp.Permissions使用

    OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...

  7. OsharpNS轻量级.net core快速开发框架简明入门教程-切换数据库(从SqlServer改为MySql)

    OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...

  8. OsharpNS轻量级.net core快速开发框架简明入门教程-多上下文配置(多个数据库的使用)

    OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...

  9. PetaPoco - 轻量级高性能的ORM框架(支持.NET Core)

    我们都知道ORM全称叫做Object Relationship Mapper,也就是可以用object来map我们的db. 而且市面上的orm框架有很多,有重量级的Entity Framework,有 ...

随机推荐

  1. OSI网络七层协议+火了火了火

    因为部门新进了一台价值百万的网络测试设备,所以有太大的必要了解有关网络相关的基础知识了. 网络七层协议OSI(open system interconnection)从上到下依次为:应用层.表示层.会 ...

  2. loadtxt()函数的糟心历程

    原计划:导入一个csv文件,然后算出平均值 import numpy as np c=np.loadtxt('d:\python36\data.csv', delimiter=',', usecols ...

  3. 走进JDK(二)------String

    本文基于java8. 基本概念: Jvm 内存中 String 的表示是采用 unicode 编码 UTF-8 是 Unicode 的实现方式之一 一.String定义 public final cl ...

  4. mysql 在原有的时间上加10个月或者一年

    UPDATE SERVER_TIME_LEFT SET END_TIME = DATE_ADD(END_TIME, INTERVAL 10 MONTH) WHERE SHOP_ID BETWEEN 1 ...

  5. R语言-编写自定义函数 ZZ

    一.函数构造器 每一个R函数都包括三个部分:函数名,程序主体以及参数集合,在编写自定义R函数时,需要将三个部分各自储存在一个R对象中.这里需要使用function函数,形如: my_function& ...

  6. WCF双工通信单工通信

    1.单工模式 单向通信,指通信只有一个方向进行,即从客户端流向服务,服务不会发送响应,而客户端也不会期望会有响应.这种情况下,客户端发送消息,然后继续执行 运行后报错: 2.双工模式 双工模式的特点是 ...

  7. NET Core微服务之路:自己动手实现Rpc服务框架,基于DotEasy.Rpc服务框架的介绍和集成

    本篇内容属于非实用性(拿来即用)介绍,如对框架设计没兴趣的朋友,请略过. 快一个月没有写博文了,最近忙着两件事;    一:阅读刘墉先生的<说话的魅力>,以一种微妙的,你我大家都会经常遇见 ...

  8. iOS逆向之TheOS

    TheOS 被设计为一个在基于 Unix 平台 (Mac OS X.IOS…) 和大多数 的Linux 平台下开发 iOS 程序的集成开发环境.说是集成开发环境,其实就是给我们准备好了一些代码模板.预 ...

  9. Windows 远程栈溢出挖掘与利用

    缓冲区溢出攻击很容易被攻击者利用,因为 C 和 C++等语言并没有自动检测缓冲区溢出操作,同时程序编写人员在编写代码时也很难始终检查缓冲区是否可能溢出.利用溢出,攻击者可以将期望数据写入漏洞程序内存中 ...

  10. javascript从作用域到闭包-笔记

    读<你不知道的javascript>一书做个笔记;编译原理:    js是一门编译型的语言,与传统编译语言类似,传统编译的过程分为三个阶段 ;     1. 分词/词法分析; 2.解析/语 ...