随笔 - 53  文章 - 0  评论 - 908 

WhereClipBuilder是在1.7.2版本中新增的一个类,用来创建WhereClip。

在之前版本多条件创建WhereClip如下:

WhereClip where = WhereClip.All;
where = where.And(Products._.ProductName.Contain("apple"));
where = where.And(Products._.UnitPrice > 1);
where = where.Or(Products._.CategoryID == 2);

每增加一个条件都是生成一个新的WhereClip。

 

使用WhereClipBuilder如下:

WhereClipBuilder wherebuilder = new WhereClipBuilder();
wherebuilder.And(Products._.ProductName.Contain("apple"));
wherebuilder.And(Products._.UnitPrice > 1);
wherebuilder.Or(Products._.CategoryID == 2);

WhereClipBuilder是条件累加并不增加条件而创建新实例, 从而得到重用,节省资源。

 

具体使用:

Northwind.From<Products>()
                .Where(wherebuilder.ToWhereClip())
                .ToList();

生成的sql:

Text:     
SELECT * FROM [Products]
WHERE (((([Products].[ProductName] LIKE @jtioerxooyxzyvsj) AND ([Products].[UnitPrice] > @txdupnwvhfznviqj))
OR ([Products].[CategoryID] = @iqgkjykstppcrqsq)))

Parameters:
@jtioerxooyxzyvsj[String] = %apple%
@txdupnwvhfznviqj[Int32] = 1
@iqgkjykstppcrqsq[Int32] = 2

 

 

 

下载

 


作者:steven hu
出处:http://www.cnblogs.com/huxj
MSN: cn_huxj@hotmail.com
交流QQ群:60831381
版权声明:欢迎任何网络媒体和网站转载本人博客的内容,只需注明作者和主博客文章地址的链接。另有约定者除外。
此声明随时可能修改,不另行通知。
评论快速通道:
posted on 2010-08-06 11:30 steven hu 阅读(498) 评论(6) 编辑 收藏

 回复 引用 查看   
#1楼 2010-08-08 03:42 | ucfar      
这是我经前用的方法可以的;
Huxj.Data.WhereClip where = new Huxj.Data.WhereClip();

where = Huxj.Model.Member._.Username == UcfarCommon.Cookie.GetValue("UserName");

DB.AriTicket.Update<Ucfar.Model.Member>(member, where);
这是你现在的方法,也是可以的;但我感觉还是以前的比较简单啊,有什么区别吗?
Huxj.Data.WhereClipBuilder whereClipBulider = new Huxj.Data.WhereClipBuilder();

whereClipBulider.And(Ucfar.Model.Member._.Username == UcfarCommon.Cookie.GetValue("UserName"));
DB.AriTicket.Update<Ucfar.Model.Member>(member, whereClipBulider.ToWhereClip());

 回复 引用 查看   
#2楼 2010-08-08 04:04 | ucfar      
或者这样也可以:
Huxj.Data.WhereClip where = Huxj.Data.WhereClip.All;

where = Ucfar.Model.Member._.Username.WhereClipEquals( UcfarCommon.Cookie.GetValue("UserName"));

DB.AriTicket.Update<Ucfar.Model.Member>(member, where);

 回复 引用 查看   
#3楼[楼主] 2010-08-08 11:15 | steven hu      
@ucfar
WhereClip在于每次操作都是生成一个新的WhereClip,
而WhereClipBuilder是条件累加,在动态多条件的时候使用,才会体现出优势。


 回复 引用 查看   
#4楼[楼主] 2010-08-08 11:41 | steven hu      
主要是源于最近做项目,多条件的高级查询,几十个条件,动态组合条件,总觉得每次都生成一个新的WhereClip有点浪费。
 回复 引用 查看   
#5楼 2010-08-08 13:27 | ucfar      
嗯嗯,讲得好,呵呵
生成器有没有更新啊?

 回复 引用 查看   
#6楼[楼主] 2010-08-08 14:42 | steven hu      
@ucfar
生成器目前没有,更新了都会上传上来的。