zoukankan      html  css  js  c++  java
  • 原创的轻量级ORM,支持Lambda进行数据库操作

    这个orm已经用了好几个月了基本完善了,现在来分享下他的操作方式

    Db.Instance.Insert<Message>()
                  .Add(o 
    => o.Product, msg.Product)
                  .Add(o 
    => o.Email, msg.Email)
                  .Add(o 
    => o.Phone, msg.Phone)
                  .Add(o 
    => o.Address, add.Area+add.Detail)
                  .Add(o 
    => o.Content, msg.Content)
                  .Add(o 
    => o.IP, ip)
                  .Add(o 
    => o.CreateAt, DateTime.Now)
                  .Execute();
    Db.Instance.Update
    <Article>(o => o.ArticleId == articleId)
                  .Add(o 
    => o.ColumnId, columnId)
                  .Add(o 
    => o.Title, title)
                  .Add(o 
    => o.Content, content)
                  .Add(o 
    => o.CreateAt, DateTime.Now)
                  .Execute() 
    > 0;
    Db.Instance.Insert(o);
    Db.Instance.Update(o);
    Db.Instance.Delete
    <Message>(o => o.MessageId == messageId);
    Db.Instance.Query
    <Message>().OrderByDescending(o => o.CreateAt);
    Db.Instance.Query
    <Message>().Where(o => o.MessageId == id).ToList();
    var q 
    = Db.Instance.Query<Product>().Where(o => o.SerialNumber.Contains(k) || o.Name.Contains(k) || o.ZhName.Contains(k) || o.EnName.Contains(k)).OrderByDescending(o=>o.CreateAt);
    q.GetRange(pageIndex, pageSize).ToList();


    Db.Instance 是根据webconfig里的第一个connection得到的
    <add name="daogou" providerName="System.Data.SqlClient" connectionString="Data Source=xxx;User ID=xxx;Password=xxx;Initial Catalog=xxx;Pooling=true" />
    也可以用new Db(string providerName, string connectionString)来得到实例,理论上支持所有的数据库,目前经过测试的有sqlserver,oledb,sqlite

    本orm是基于表达式树开发的,经测试构造sql效率非常高,支持where,in,distinct,select field,top,order,max,count,contains(like),insert,delete,update,getrange等,就不一一示例。全部使用参数化查询
    不过只支持单表操作,因为我个人不喜欢把业务逻辑放在sql语句里,支持事务(q.Attach(DbTransaction tran))。

    最后感谢老赵在园子里写了那么多关于表达式树的文章!

  • 相关阅读:
    数据表列名与数据库关键字冲突,在Hibernate下的解决办法
    Ubuntu12.04 MySQL服务器乱码问题的解决办法
    Linux实时将所有输出重定向到文件
    vue Element UI 导航高亮
    Js计算时间差
    Js时间处理
    Vue设置导航栏为公共模块并在登录页不显示
    Vue中表单校验
    Vue中div高度自适应
    Vue引入js、css文件
  • 原文地址:https://www.cnblogs.com/farmer/p/1658231.html
Copyright © 2011-2022 走看看