原创的轻量级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))。

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

 

 

posted @ 2010-01-28 11:45  Farmer  阅读(2904)  评论(22编辑  收藏  举报