当前位置: 移动技术网 > IT编程>开发语言>.net > Dapper扩展Dapper.Common框架 Linq To Sql 底层源码.net ORM框架

Dapper扩展Dapper.Common框架 Linq To Sql 底层源码.net ORM框架

2019年01月31日  | 移动技术网IT编程  | 我要评论

win732位系统下载,农村合作医疗系统,焦裕禄的资料

源代码:https://github.com/1448376744/dapper.common
nuget: dapper.common
qq群:642555086
一、基本结构,此处可用委托,或动态代理完成
class program
{
    //类加载时配置一次
    static program()
    {
        //配置数据源为mysql
        sessionfactory.datasource = ()=>new mysqlconnection("server=127.0.0.1;user id=root;password=1024;database=test;");
        //下划线不敏感,默认不区分大小写
        sessionfactory.matchnameswithunderscores = true;
        //session使用静态代理,记录会话日志,生产模式设置false
        sessionfactory.sessionproxy = true;

    }
    static void main(string[] args)
    {
        //变量声明
        isession session = null;
        try
        {
            //开启一次数据会话
            session = sessionfactory.getsession();
            //开启事物,取消自动提交
            session.open(false);
            //事物操作1
            //事物操作2
            //事物操作3
            //.......
            //提交事物
            session.commit();
        }
        catch (exception e)
        {
            //异常回滚
            if (session!=null)
            {
                session.rollback();
            }
            throw e;
        }
        finally
        {
            //资源释放
            if (session!=null)
            {
                session.close();
            }
        }
    }
}

二、映射,此处可用自动模板完成
 /// <summary>
/// 对应表student,同名可以省略,字段名不分大小写,不分下划线
/// </summary>
[table("student")]
public class student
{
    /// <summary>
    /// 对应字段id,主键标识列identity=true
    /// </summary>
    [column("id", true)]
    public int? id { get; set; }
    /// <summary>
    /// 对应字段me_name,通过column校正为name,
    /// </summary>
    [column("me_name", false)]
    public string mename { get; set; }
    /// <summary>
    /// 对应数据字段age无需校正
    /// </summary>
    public int? age { get; set; }
    /// <summary>
    /// 对应字段create_time,不分大小写,下划线不敏感
    /// </summary>
    [column("create_time", false)]
    public datetime? createtime { get; set; }
}
三、常用api
     var sesion = sessionfactory.getsession();
    /*****************insert*******************/
    //dapper
    var row1 = sesion.execute("insert into student(age,me_name)values(@age,@mename)", new { age = 20, mename = "dapper" });
    //扩展
    var row2 = sesion.from<student>().insert(new student()
    {
        name = "dapper.common",
        age = 50,
        createtime = datetime.now
    });
    var identity = sesion.from<student>().insertbyid(new student()
    {
        age = 20,
        name = "identity"
    });
    //list
    var list = new list<student>();
    list.add(new student()
    {
        name = "dapper.common",
        age = 50,
        createtime = datetime.now
    });
    var row3 = sesion.from<student>().insert(list);

    /*****************update*******************/
    //根据主键修改全部列
    var row4 = sesion.from<student>().update(new student()
    {
        id = 27,
        name = "update"
    });
    //list
    var list2 = new list<student>();
    list2.add(new student()
    {
        name = "update list",
        id = 27
    });
    list2.add(new student()
    {
        name = "update list",
        id = 28
    });
    var row5 = sesion.from<student>().update(list2);
    //修改部分列+条件更新
    var entity = new
    {
        age = 20,
        name = "admin"
    };
    var row6 = sesion.from<student>()
        //如果第一个条件为true,则更新mename为entity.name
        .set(!string.isnullorempty(entity.name), a => a.name, entity.name)
        //age在原来的基础上加20
        .set(a => a.age.eq(a.age + entity.age))
        //条件id=30
        .where(a => a.id == 30)
        //要执行的操作
        .update();
    /*****************delete*******************/
    //更据实体id删除
    var row7 = sesion.from<student>().delete(new student() { id = 30 });
    //条件删除
    var row8 = sesion.from<student>()
        .where(a => a.age > 20)
        .delete();
    /*****************select*******************/
    //查询单个
    var student = sesion.from<student>().single();
    var list1 = sesion.from<student>().select();
    //复杂查询
    list = sesion.from<student>()
        //查询条件
        .where(a => a.age > 20 && a.id.in(new int[] { 1, 2, 3 }.tolist()))
        //排序
        .desc(a => a.id)
        //悲观锁
        .xlock()
        //分页
        .limit(1, 10)
        //部分列
        .select(s => new { s.name });
    //分页查询,返回总记录数
    var total = 10;
    list = sesion.from<student>()
        .skip(1, 5, out total)
        .select();
    /*****************动态查询*******************/
    var query = new wherequery<student>();
    query
        .and(a => a.name.like("%aa%"))
        .or(a => a.id > 0)
        .or(a => a.id < 10)
        .or(a => a.id.in(new[] { 1, 2, 3 }))
        .and(a => 1 > 2 ? a.name.like("cc%") : a.id > 100);
    var res = sesion.from<student>().where(query).exists();
    /*****************会话日志*******************/
    var aa = sesion.logger();

 

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网