03 2011 档案

摘要:《上篇》主要介绍如何通过DataBinder实现批量的数据绑定,以及如何解决常见的数据绑定问题,比如数据的格式化。接下来,我们主要来谈谈DataBinder的设计,看看它是如何做到将作为数据源实体的属性值绑定到界面对应的控件上的。 阅读全文
posted @ 2011-03-27 21:19 Artech 阅读(8627) 评论(29) 推荐(19) 编辑
摘要:昨天写了《三种属性操作性能比较》,有个网友写信问我一个问题:从性能上看,Expression Tree和IL Emit孰优孰劣?虽然我在回信中作了简单的回答,但不知道这个网友是否懂我的意思。反正今天呆在家里也没事儿,干脆再就这个话题再写一篇文章。 阅读全文
posted @ 2011-03-27 15:30 Artech 阅读(8226) 评论(18) 推荐(29) 编辑
摘要:在《上篇》中,我比较了三种属性操作的性能:直接操作,单纯通过PropertyInfo反射和IL Emit。本篇继续讨论这个话题,我们再引入另外两种额外的属性操作方式:Expression Tree和通过Delegate的静态方法CreateDelegate创建相应的委托进行属性的赋值和取值 阅读全文
posted @ 2011-03-26 02:09 Artech 阅读(14021) 评论(32) 推荐(14) 编辑
摘要:在《一句代码实现批量数据绑定》中,我通过界面控件ID与作为数据源的实体属性名之间的映射实现了批量数据绑定。由于里面频繁涉及对属性的反射——通过反射从实体对象中获取某个属性值;通过反射为控件的某个属性赋值,所以这不是一种高效的操作方式。为了提升性能,我通过IL Emit的方式创建了一个PropertyAccessor组件,以实现高效的属性操作。如果你看了我在文中给出的三种属性操作性能的测试结果,相信会对PropertyAccessor的作用有深刻的印象。 阅读全文
posted @ 2011-03-24 21:23 Artech 阅读(7799) 评论(41) 推荐(16) 编辑
摘要:对于一个以数据处理为主的应用中的UI层,我们往往需要编写相当多的代码去实现数据绑定。如果界面上的控件和作为数据源的实体类型之间存储某种约定的映射关系,我们就可以实现批量的数据绑定。为了验证这种想法,我写了一个小小的组件 阅读全文
posted @ 2011-03-23 22:53 Artech 阅读(10032) 评论(67) 推荐(45) 编辑
摘要: Oracle uses a Data Dictionary to store details of all the Tables, Columns etc.. (check out the associated Data Model). You will normally be interested only in your own Tables, which are provided by the 'USER' views, which are for the User who is currently logged in. The System Administrator or DBA will usually be interested in the 'ALL' Views, which show data for all Users. 阅读全文
posted @ 2011-03-18 14:06 Artech 阅读(3594) 评论(4) 推荐(2) 编辑
摘要:本篇文章讨论可空值类型(Nullable)的转换,却确地说是如何将一种类型的值对象转换成相应的可空值。这来源于今天我们的一个成员遇到的一个小问题,我经过一些整理写了这篇文章。虽然没有什么技术含量可言,也希望对某些读者带来帮助。 阅读全文
posted @ 2011-03-17 20:20 Artech 阅读(26333) 评论(34) 推荐(34) 编辑
摘要:[J.D. Meier's Blog]“Life is like skiing. Just like skiing, the goal is not to get to the bottom of the hill. It’s to have a bunch of good runs before the sun sets.” – Seth Godin It's been a good run. After more than 10 years in patterns & practices, I'm on to my next adventure here at Microsoft. For this post, I wanted to take a stroll down memory lane. During my time at patterns & practices, 阅读全文
posted @ 2011-03-17 12:47 Artech 阅读(1955) 评论(1) 推荐(4) 编辑
摘要:对于数据库设计来说,多对多(或者一对多)是一种常见的数据关系,比如联系人和地址之间的关系。我们通常采用建立关系表的方式来表示这种关系,比如我们创建一张表来存储联系人和地址之间的关系。如果我们最终需要通过存储过程的方式来维护他们之间的关系,该如何做呢?本篇文章给你一个具体的例子来演示如果采用存储过程来建立和删除实体之间的关系。 阅读全文
posted @ 2011-03-16 16:41 Artech 阅读(6929) 评论(17) 推荐(7) 编辑
摘要:继续讨论EF中使用存储过程的问题,这回着重讨论的是为存储过程的参数进行赋值的问题。说得更加具体一点,是如何为实体映射的Delete存储过程参数进行赋值的问题。关于文中涉及的这个问题,我个人觉得是EF一个有待改进的地方,不知道各位看官是否同意? 阅读全文
posted @ 2011-03-13 16:02 Artech 阅读(5216) 评论(6) 推荐(9) 编辑
摘要:本篇文章通过实例的方式,讨论两个在EF使用存储过程的主题:如何通过实体和存储过程的映射实现逻辑删除;对于具有自增长类型主键的数据表,在进行添加操作的时候如何将正确的值反映在实体对象上。 阅读全文
posted @ 2011-03-13 00:13 Artech 阅读(6223) 评论(4) 推荐(8) 编辑
摘要:今天写程序频繁用到两中字符串操作:删除某个字符串指定的前缀和后缀。由于没有现成的方法可用,写了两个扩展方法:TrimPrefix和TrimSuffix。 阅读全文
posted @ 2011-03-07 20:52 Artech 阅读(6988) 评论(12) 推荐(6) 编辑
摘要:在《实现存储过程的自动映射》中,我通过基于T4的代码生成实现了CUD存储过程的自动映射。由于映射的都是基于数据表结构的标准的存储过程,所以它们适合概念模型和存储模型结构相同的场景。如果两种模型存在差异,在进行数据更新操作的时候就会出错。本篇文章主要介绍当概念模型中具有继承关系的两个实体映射到数据库关联的两个表,如何使用存储过程。 阅读全文
posted @ 2011-03-06 22:32 Artech 阅读(6423) 评论(8) 推荐(7) 编辑
摘要:最近一段时间的工作任务是如何将EF引入到我们的开发框架,进行相应的封装、扩展,使之成为一个符合在特定场景下进行企业级快速开发的ORM。在此过程中遇到了一些挑战,也有一些心得。为了向大家分享这些心得,接下来我会写一系列相关的文章。第一个主题是关于在EF中使用存储过程的问题 阅读全文
posted @ 2011-03-05 10:04 Artech 阅读(23141) 评论(29) 推荐(24) 编辑