
微型ORM——用VB和C#编写的动态类型ORM,只有160行
使用VB 10和C# 4中的DLR新特性,你可以创建一个无需配置的ORM,它可以与旧系统遗留下来的的存储过程很好地协作。尽管它是使用一般的对象加点属性的语法来访问的,但所有的数据对象都是在运行时,基于数据库返回的信息来创建的。为了完成这些,我们不需要定义接口,不需要实现类,也不需要编写数据映射定义。

使用VB 10和C# 4中的DLR新特性,你可以创建一个无需配置的ORM,它可以与旧系统遗留下来的的存储过程很好地协作。尽管它是使用一般的对象加点属性的语法来访问的,但所有的数据对象都是在运行时,基于数据库返回的信息来创建的。为了完成这些,我们不需要定义接口,不需要实现类,也不需要编写数据映射定义。

本采访视频由王瑜珩翻译,朱永光审校。
在这个访谈中,Eric Nelson谈到了VS 2010带来的新特性、C#与VB.NET趋同的地方、Parallel库的引入,以及Azure云计算。
.NET Framework 4.5 Beta不仅带来了Async/Await关键字,简化了C#和Visual Basic语言,还为一些通用I/O和数据访问函数增加了异步方法。新的异步特性也同样包含于ASP.NET 4.5、WCF和WPF中。
.NET一直都支持可选参数,但是C#语言却并不支持,除了调用COM库以外,可选参数通常是被禁止使用的。现在,随着C# 4对可选参数的支持,我们可以看到可选参数被越来越多的使用,而不仅仅限于遗留代码中。这些应用包括与动态语言的互操作、只读数据类型,以及ASP.NET MVC中的许多地方。
CSI是个简单的C#解释器,可以通过命令行编译独立的C#文件。最近CSI发布了新版本,开始支持.NET 4.0。CSI本身开源,同时具备完整的测试套件。
Marek Safar在其博客上宣布,Mono C#编译器已经完整支持C# 4.0的特性。这标志着Mono C#编译器进入一个新的里程碑,同时也为Mono支持.NET 4.0的新特性打好了基础。
在.NET中针对已有的存储过程创建封装函数是相当困难的一件事。存储过程有特定的调用约定,这些约定在.NET Framework中并不常用,当中的很多也根本得不到支持。例如,C#不支持可选参数,.NET语言不支持可为空类型的可选参数。
C#对装箱后的值类型支持的并不好。与VB不同,==这样的基本算术比较符无法在装箱后的类型上得到正确的结果,即使所比较的值属于同一类型。幸好在C#4中可以通过使用dynamic来避免这样的问题。
In .NET 4 types will no longer be restricted to a single assembly. A single type, or part of a type, can be extracted from one assembly and placed into another. Why would you do this? Well first off all, to reduce the cost of including the Office Primary Interopt Assemblies from several megabytes to about 2KB by only including what you actually need.