posts - 165,  comments - 880,  trackbacks - 42
         条件表达式在NClay数据持久化处理中起着非常重要的作用,它并不是一个简单的查询条件;除了数据添加几呼所有数据操作都可以直接在条件的基础上进行操作,包括数据修改、删除、查询和统计(于是起了个条件驱动的操作方式)。下面大概介绍一下条件表达式的结构和在实际应用中的过程。

n        结构

所有条件都是基于NClay.Data.Expressions.IExpression的实现,重载&|运算符用于表示SQL中的andor条件运行。


IExpression
提供非常丰富的数据操作接口,当使用人员得到条件表达式基本就可以在它的基础上完成所需要的数据操作。

n        条件的获取

除了空条件外,所有条件都必须过组件提供的Field映射类型运算或方法得到;Field重载很多运算符功能方便条件的产生。


n       
代码用例

l      获取相关类别产品价大于多少的产品

            IList<产品> items;

            items = (DB.产品.类别ID == 1 & DB.产品.单价> 10).List<产品>();

            foreach (产品 item in items)

            {

                Console.WriteLine("");

                Console.WriteLine(item.产品名称+ "\t\t" + item.单价);

            }

l      获取有效的产品

            items = (DB.产品.中止== true).List<产品>();

            foreach (产品 item in items)

            {

                Console.WriteLine("");

                Console.WriteLine(item.产品名称+ "\t\t" + item.单价);

            }

l      修改某一产品价格

            int id = 1;

            产品 item = DaoContext.Load<产品>(id);

            Console.WriteLine(item.单价);

            (DB.产品.产品ID == id).Edit<产品>(DB.产品.单价.Set(30));

            item = DaoContext.Load<产品>(id);

            Console.WriteLine(item.单价);

l      删除某条件下的产品

            Console.WriteLine((DB.产品.中止== true).CountOf<产品>());

            (DB.产品.中止== true).Delete<产品>();

            Console.WriteLine((DB.产品.中止== true).CountOf<产品>());

l      一些简单的统计操作

            Console.WriteLine((DB.产品.中止== true).CountOf<产品>());

            Console.WriteLine((DB.产品.中止== true).SumOf<产品>(DB.产品.库存量));

            Console.WriteLine((DB.产品.类别ID == 1).MaxOf<产品>(DB.产品.单价));

 

组件的条件表达式操作就暂时介绍到这里,在下一章时通过讲解视图对象的定义和条件的结合实现更丰富复杂的数据查询和统计。

 

相关代码下载

 

n        相关章节

l         NClay数据持久化处理入门编

l         NClay数据持久化处理入门编-条件表达式

posted on 2007-10-14 18:29 henry 阅读(1231) 评论(4)  编辑 收藏

FeedBack:
2007-10-14 20:27 | Adrian H.      
interesting...
  回复  引用  查看    
2007-10-15 15:29 | Kain      
DLinq让所有的这些都黯然失色。
  回复  引用  查看    
#3楼 [楼主]
2007-10-15 17:15 | henry      
@Kain
也许是的:)
  回复  引用  查看    
2007-10-15 21:29 | Adrian H.      
@Kain
但自己去实现这些也是很有意思的!
。。。
虽然我自己现在做东西都直接用LINQ TO SQL了。。最无知的时候几天才能写完的DataAccess。。现在几乎是0时间了。。。
  回复  引用  查看    

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-01-02 08:32 编辑过


相关链接:
 


<2007年10月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

寻求伯乐,限广州地区有意联系


与我联系

搜索

 

常用链接

留言簿(21)

我参加的小组

我的标签

随笔分类

最新评论