​回到目录​

当你打开扩展名为dbml的LINQ-to-SQL的文件后,你将会看到很多用partial修饰符来修饰的方法,类等,它们是用来做什么的呢?起初到win form时代也这个东西,partial译为“部分”,就是说它只是某个东西的一部分,你可以在其它地方再去扩展它,起初微软就认为对于一个类来说,可能不是一个人做涉及,它可能是几个人同时去干预它,所以,它提出的“分部类 partial class”的概念,它之后被非常好的应用到了LINQ-to-SQL中。

对于一个由生成器为我们生成的模型来说,LINQ-to-SQL一定不知道我们以后要做什么,它只能把最标准的代码为我们生成,可能是一个表对象,一些表属性,固定的行为,事件等等,但与业务相关的东西它无法生成,这时,它将类,方法做成了partial,如图:

LINQ-to-SQL那点事~耳目一新的partial class 和 partial method_扩展名

这使我们可以在DBML模型外部去扩展这个User_Info类,它里面也有partial method,事实上,partial method只能被实现一次,必须返回值必须是void,一般地,在DBML模型中只是规定了固定的method签名,而真到的实现你可以自己在扩展的class中去实现。

LINQ-to-SQL那点事~耳目一新的partial class 和 partial method_支付宝_02

像下面三个partial method是公用的,对于每个实现它们都是统一的,其中OnCreated是指当类型被new时,去执行本方法,有时,我们确实需要这样去做

LINQ-to-SQL那点事~耳目一新的partial class 和 partial method_sql_03

对于微软自己生成的LINQ-to-SQL(DBML)文件,我们通过查看它的源代码,确实使我们耳目一新,另一方面也感觉到了C#语言的魅力,而我们当初抛弃JAVA(不思进取的语言)是正确的选择,呵呵!

​回到目录​

作者:仓储大叔,张占岭,
荣誉:微软MVP