经典座右铭,最新日志,缤纷网
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
要右键属性选择嵌入式资源
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; } }
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 经验的同学自然就理解了
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 来用。
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" }; } }
行这就完事了。
可以去看看项目文档,支持功能还挺多的。代码生成器也有。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
asp.net搭建博客,使用BlogEngine.NET+MySql搭建博客
网友评论