Skip to content

itlizhi/orm-dapper-extensions

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 

Repository files navigation

orm-dapper-extensions

基于Dapper的一些扩展方法,支持sqlserver和mysql

扩展 增删改查,简单linq where查询,in查询,分页

可配合 https://github.com/itlizhi/t4-database-to-model 生成数据库model模型

 //工厂方法
    [TestMethod]
    public void Factory()
    {
       using (var dbContext = DBContextFactory.CreateContext("mysql"))
       {
           var list = dbcontext.GetAll<model>();
           Assert.IsNotNull(list);
       }
     }

    //依赖注入 autofac
    var builder = new ContainerBuilder();
    builder.RegisterType<MySqlDBContext>().As<IDBContext>().InstancePerLifetimeScope(); //MySql数据库工作单元

 //基本方法
 using (IDBContext context = new MySqlDBContext("ormtest"))
 {
  
   try
    {
        context.BeginTransaction();
        //insert
        var stu = new student() { Name = "张三" + DateTime.Now.FormatDateTime(), Status = StudentStatus.yes };
        var rowID = context.Insert(stu);

    //error
    //stu = new student() { Name = null, Status = StudentStatus.yes };
    //rowID = context.Insert(stu);

    //update
    var model = context.Select<student>(p => p.ID == 1).FirstOrDefault();
    model.Status = StudentStatus.no;
    context.Update(model);

    // where
    model = context.Select<student>(p => p.ID == 1).FirstOrDefault();

    //delete 
    var id = rowID.ToInt();
    context.Delete<student>(p => p.ID == id);

    model = context.Select<student>(p => p.ID == id).FirstOrDefault();

    // in
    var arr = new int[] { 1, 2, 3 };
    var list = context.In<student>(arr);
    list = context.Select<student>(p => p.ID > 2 && p.Status == StudentStatus.yes);

    //get
    var getInfo = context.Get<student>(10);
    var getList = context.GetAll<student>();

    //join
    var result = new v_student();
    var dy = context.Get<student, grade, student>(1, (t1, t2) =>
    {
    result.ID = t1.ID;
    result.Name = t1.Name;
    result.gradeList.Add(t2);
    return t1;
    });

    //execute
    var grade = context.Execute("update grade set grade =150 where ID=@id", new { id = 1 });

    //dapper
    var first = context.DbConnection.QueryFirst<grade>("select * from grade where id=@id", new { id = 1 });
    Assert.AreEqual(first.Grade, "150");

    //explicitkey
    var exp = new explicitkey() { Guid = System.Guid.NewGuid().ToString(), Title = "Guid" };
    context.Insert(exp);

    var nexp = context.Select<explicitkey>(p => p.Guid == exp.Guid).FirstOrDefault();
    nexp.Title = "newGuid";

    context.Update(nexp);

    //分页
    var stulist = context.Page<student>("select * from student", null, 2);

    var mitpk = new mitpk() { pk1 = 1, pk2 = System.Guid.NewGuid().ToString(), addtime = DateTime.Now };
    context.Insert(mitpk);


    context.CommitChanges();
    }
    catch (Exception)
    {
        context.Rollback();
        throw;
    }
    Assert.AreEqual(1, 1);
 }

   

About

基于Dapper的一些扩展方法,支持sqlserver和mysql

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages