happyhippy

这个世界的问题在于聪明人充满疑惑,而傻子们坚信不疑。--罗素
posts - 137,comments - 473,trackbacks - 45

01 2010 档案
Linq to Sql : 并发冲突及处理策略
摘要: 0. 并发冲突的示例 单用户的系统现在应该比较罕见了,一般系统都会有很多用户在同时进行操作;在多用户系统中,涉及到的一个普遍问题:当多个用户“同时”更新(修改或者删除)同一条记录时,该如何更新呢? 下图展示了开放式并发冲突的一个示例: 假设数据库中有一条记录Record{Field1=5, Field2=6, Field3=7}(以下简写为{5, 6, 7}),A、B两个用户按照如下顺序操作这一...阅读全文
posted @ 2010-01-30 18:23 Silent Void 阅读(1260) | 评论 (4) 编辑
LINQ To SQL在N层应用程序中的CUD操作、批量删除、批量更新
摘要: 0. 说明 Linq to Sql,以下简称L2S。 以下文中所指的两层和三层结构,分别如下图所示: 准确的说,这里的分层并不是特别明确:(1) 生成的DataContext(Linq t0 SQL Runtime)和Entity是放在一个文件中的,物理上不能切割开来;上图只是展示逻辑上的结构。(2) 拿上图右边的三层结构来说,鉴于第(1)点,UI层就可以跨越BusinessLogic层,直接访...阅读全文
posted @ 2010-01-29 16:07 Silent Void 阅读(628) | 评论 (0) 编辑
Linq to Sql : 动态构造Expression进行动态查询
摘要: 前一篇在介绍动态查询时,提到一个问题:如何根据用户的输入条件,动态构造这个过滤条件表达式呢?Expression<Func<ProductExt, bool>> predicate t => t.ProductName.Contains("che") && t.UnitPrice >= 22; 理想情况下,我希望可以像下面这样来构造predicate,这样,我们就可以使用&、| 、&=、|=来任意拼接过滤条件了: 但是理想与现实之间,似乎总有不可逾越的鸿沟…… 前面的代码中,我们总是要写一常串Expression<Func<T, bool>>,写得都有点儿烦了,我妄想自定义一个类型,这样就不阅读全文
posted @ 2010-01-28 15:21 Silent Void 阅读(911) | 评论 (7) 编辑
Linq to Sql : 三种事务处理方式
摘要: Linq to SQL支持三种事务处理模型:显式本地事务、显式可分发事务、隐式事务。(from MSDN: 事务 (LINQ to SQL))。MSDN中描述得相对比较粗狂,下面就结合实例来对此进行阐述。 0. 测试环境 OS Windows Server 2008 Enterprise + sp1 IDE Visual Studio 2008, .net framework 3.5 + SP...阅读全文
posted @ 2010-01-27 14:47 Silent Void 阅读(3948) | 评论 (3) 编辑
Linq to Sql:N层应用中的查询(下) : 根据条件进行动态查询
摘要: 如果允许在UI层直接访问Linq to Sql的DataContext,可以省去很多问题,譬如在处理多表join的时候,我们使用var来定义L2S查询,让编译器自动推断变量的具体类型(IQueryable<匿名类型>),并提供友好的智能提示;而且可以充分应用L2S的延迟加载特性,来进行动态查询。但如果我们希望将业务逻辑放在一个独立的层中(譬如封装在远程的WCF应用中),又希望在逻辑层应...阅读全文
posted @ 2010-01-26 20:01 Silent Void 阅读(2511) | 评论 (13) 编辑
Linq to Sql:N层应用中的查询(上) : 返回自定义实体
摘要: 如果允许在UI层直接访问Linq to Sql的DataContext,可以省去很多问题,譬如在处理多表join的时候,我们使用var来定义L2S查询,让IDE自动推断变量的具体类型(IQueryable<匿名类型>),并提供友好的智能提示;而且可以充分应用L2S的延迟加载特性,来进行动态查询。但如果我们希望将业务逻辑放在一个独立的层中(譬如封装在远程的WCF应用中),又希望在逻辑层应...阅读全文
posted @ 2010-01-25 13:55 Silent Void 阅读(2367) | 评论 (16) 编辑