• 开源数据访问组件Smark.Data 1.7新增功能


    借助于扩展方法的功能,这一版本的改进可以让数据库操作变得更简单方便,在数据库操作相关会给你一种全新的体验.主要改进有以下几点:

    • 条件表达式可以直接和string进行组合,从而更灵活地创建复杂的查询条件
    • 扩展Load_方法,可以直接在值对象的基础上获取相关ID数据对象
    • 扩展一系的查询方法,可直接在string的sql上进行数据操作,包括查询获取查询对象数据.在操作过程完全不需要借助于其他对象来处理.
    • 扩展可以直接在存储过程对象进行执行操作
    以上的一系列扩展都是直接能操作数据,而不再需引用相关条件对象或数据库上下文对象,让数据操作变得更简单灵活.

    对象获取和保存

        var emp = 3.Load_<Employee>();
        emp.Notes += "_test";
        emp.Save_();

    以上就是简单地根据ID值获取对象,修改并保存.由于扩展方法容易导致和其他方法冲突,所以在方法添加了_以便区分.

    SQL执行

    在原来的版本时处理一些SQL执行,必须借助于一些对象.就是必须创建一个SQL执行对象来处理SQL.但在1.7版中就不再需要这样做,直接在一个SQL的String基础上就能执行操作.

    "delete * from employees".Execute();

    以上是简单地执行一个delete的sql语,当然也可以执行一个查询并返回一个对象列表

        foreach (var item in "select * from employees".List<Employee>())
        {
            Console.WriteLine(item.FirstName);
        }

    查询需要设置相关参数

        foreach (var order in "select * from orders where employeeid=@p1".Parameter("p1", 3).List<Order>())
        {
            Console.WriteLine("orderid:{0}\t orderdate:{1}", order.OrderID, order.OrderDate);
        }

    存储过程执行

        CustOrderHist coh = new CustOrderHist();
        coh.CustomerID = "ALFKI";
        coh.ExecProc_();

    只需要创建一个存储过程描述对象,设置好相关参数值就可以直接执行处理,当然也可以执行并返回一个查询结果.

        CustOrderHist coh = new CustOrderHist();
        coh.CustomerID = "ALFKI";
        foreach (var data in coh.ExecProcToObjects_<CustOrderHistData>())
        {
            Console.WriteLine("{0}\t{1}", data.ProductName, data.Total);
        }

    对象条件和string描述的条件整合

    在原有的条件表达式中处理复杂的SQL查询变得比较麻烦,实际情况下一些复杂的条件的确没有直接SQL来得直观,因此新版条件表达式可以直接和string描述的条件整合并产生新的表达式对象进行数据操作.

        Expression exp = new Expression();
        exp &=  Order.orderDate >= "1996-7-1";
        exp &= " employeeid in (select employeeid from employees where region=@p1)".Add("p1", "WA");
        foreach (var order in exp.List<Order>())
        {
            Console.WriteLine("orderid:{0}\t orderdate:{1}", order.OrderID, order.OrderDate);
        }

    总结

    以上几种操作的简化相信可以让你操作数据库变得更轻松和灵活.

    组件官网:http://www.ikende.com/SmarkData.aspx

    源代码网站:http://smark.codeplex.com/

    访问Beetlex的Github
  • 相关阅读:
    为docker容器设置独立ip
    mybatis使用步骤
    mybatis查询返回null解决方案
    单实例和多实例的区别以及用途
    ASP.NET MVC3 通过Url传多个参数方法
    在ASP.NET MVC中,使用Bundle来打包压缩js和css
    MVC Html.AntiForgeryToken() 防止CSRF攻击
    asp.net mvc 在View中获取Url参数的值
    转:ASP.NET MVC利用TryUpdateModel来做资料更新 (二)
    转:ASP.NET MVC利用TryUpdateModel来做资料更新 (一)
  • 原文地址:https://www.cnblogs.com/smark/p/2724077.html
Copyright © 2020-2023  润新知