此例子是使用LINQ2Dapper封装,效率优于EntityFramwork,并且支持.NetFramework和.NetCore框架,只依赖于Dapper
支持.net framework4.6.1及以上
支持.net core2.0及以上
应用层需要引用包Kogel.Dapper.Extension.MsSql(如果数据库是Oracle则引用Kogel.Dapper.Extension.Oracle),Nuget上可以下载安装。
实体类层需要安装Kogel.Dapper.Extension表名字段特性。
Model实体类
using Kogel.Dapper.Extension.Attributes;
public class users
{
/// <summary>
/// 用户id(特性Identity标识该字段为主键)
/// </summary>
[Identity]
public int id { get; set; }
/// <summary>
/// code
/// </summary>
public string code { get; set; }
/// <summary>
/// 用户名称
/// </summary>
public string name { get; set; }
/// <summary>
/// 创建方式(1自定义角色 2通用角色)
/// </summary>
public int createWay { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime createDate { get; set; }
/// <summary>
/// 创建人
/// </summary>
public string createUsers { get; set; }
/// <summary>
/// 角色id
/// </summary>
public int roleId { get; set; }
使用实例
using System;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using Kogel.Data.Model;//实体类
using Kogel.Dapper.Extension.MsSql;
using Kogel.Dapper.Extension.MsSql.Extension;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
using (var conn = new SqlConnection("server=localhost;user id=sa;password=sa;database=PermissionManage"))
{
//模型类属性不能出现可空类型,例如int?
var list = conn.QuerySet<users>().Where(x => x.name.Contains("Y")).ToList();
//查询
var users = conn.QuerySet<users>().Where(x => x.code != "1").Get();
//模糊查询
var users1 = conn.QuerySet<users>().Where(x => x.name.Contains("Y")).Get();
//修改
users1.name = Guid.NewGuid().ToString();
users1.createDate = DateTime.Now;
int result = conn.CommandSet<users>().Where(x => x.id == 4).Update(users1);
//修改查询
var users2 = conn.QuerySet<users>().Where(x => x.name.Contains("Y")).UpdateSelect(x => new users { name = "Y11" }).FirstOrDefault();
//新增
int result2 = conn.CommandSet<users>().Insert(new users() { code = Guid.NewGuid().ToString(), name = "test", createWay = 1, createDate = DateTime.Now, roleId = 2 });
//删除
int result3 = conn.CommandSet<users>().Where(x => x.roleId == 2 && x.name == users2.name).Delete();
//不连表查询返回dynamic
var list1 = conn.QuerySet<users>().Where(x => x.code != "1").ToList(true);
//连表查询返回dynamic
var list2 = conn.QuerySet<users>().Where(x => x.code != "1").Join<users, project_Role>(x => x.roleId, y => y.id).ToList(true);
//翻页查询
var list3 = conn.QuerySet<users>().OrderBy(x => x.createDate).PageList(1, 10);
//翻页连表查询返回dynamic
var list4 = conn.QuerySet<users>().Join<users, project_Role>(x => x.roleId, y => y.id).OrderBy(x => x.createDate).PageList(1, 10, true);
//动态化查询
var list5 = conn.QuerySet<users>().Where(new users() { id = 2, name = "Y11" }).Get();
//连表使用主表和副表条件翻页查询
var list6 = conn.QuerySet<users>().Join<users, project_Role>(x => x.roleId, y => y.id).Where(x => x.name == "adonis")
.Where<project_Role>(x => x.projectId == 2 && x.enabled == true).OrderBy(x => x.createDate).PageList(1, 10, true);
};
}
}
}
完整Demo可以去Github上下载:
https://github.com/a935368322/Kogel.Dapper.Test
如有问题也可以加QQ群讨论:
技术群 710217654
框架开源,可以加群下载源码