轻量级.NET CORE ORM框架Insql使用教程
程序员文章站
2022-08-10 11:28:37
Insql 国人开发,是一款汲取 Mybatis 优点的.NET ORM 框架。追求简单直观,使用*灵活等特点。 项目主页: "https://rainrcn.github.io/insql" 此 ORM 是以 Mybatis 的 Sql 配置方式,以 Dapper 为对象映射的基础上建立。喜欢写 ......
insql 国人开发,是一款汲取 mybatis 优点的.net orm 框架。追求简单直观,使用*灵活等特点。
项目主页:
此 orm 是以 mybatis 的 sql 配置方式,以 dapper 为对象映射的基础上建立。喜欢写 sql 的同学们肯定会喜欢的。另外因为对象映射使用 dapper 的关系,所以性能上不用过多担心。
创建项目
模板选择api
或web应用程序
,如果会自己大家结构选择空
也是可以的。
在项目上鼠标右键选择管理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.xml
sql 配置
<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 Api框架】(三)集成轻量级ORM——SqlSugar:3.3 自动生成实体类
-
一个轻量级的基于 .NET Core 的 ORM 框架 HSQL
-
.NET Core使用APB vNext框架入门教程
-
.NET Core使用APB vNext框架入门教程
-
【从零开始搭建自己的.NET Core Api框架】(三)集成轻量级ORM——SqlSugar:3.2 在框架的基础上利用SqlSugar快速实现CRUD实战篇
-
轻量级.NET CORE ORM框架Insql使用教程
-
OsharpNS轻量级.net core快速开发框架简明入门教程-从零开始启动Osharp
-
【从零开始搭建自己的.NET Core Api框架】(三)集成轻量级ORM——SqlSugar:3.1 搭建环境
-
Python的轻量级ORM框架peewee使用教程
-
【从零开始搭建自己的.NET Core Api框架】(三)集成轻量级ORM——SqlSugar:3.3 自动生成实体类