LINQ与ADO.NET 3.0的创新
<shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></path><lock v:ext="edit" aspectratio="t"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 337.5pt; HEIGHT: 45pt" type="#_x0000_t75" alt=""><imagedata src="file:///C:%5CDOCUME~1%5CAdmin%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image001.gif" o:href="http://blog.sina.com.tw/myimages/43/4907/images/1151050565_1.gif"></imagedata></shape>
你知道微软下一代ADO.NET 3.0资料存取技术的重大创新与改革吗?
为了让各位预览未来的ADO.NET 3.0技术,虽然祭司最近一直在忙碌于ASP.NET 2.0出版事宜,但是还是不能荒废引领各位迈向最新指术的伟大宗旨,而这不也是各位来到DotNet开发圣殿最大的目的吗,祭司约略翻译了美国微软副总Somasegar的Blog文章,前一个星期他才出尽了锋头,爆红到整个.NET圈都在引用它的文章,因为它揭露了.NET Framework 3.0的蓝图概貌,以下是翻译:
Language-Integrated Query(LINQ)是一项消除不同资料领域不协调阻力的突破性科技,例如在查询XML、关连式资料库或物件时,透过LINQ技术,程式开发人员不需要学习个别不同的查询语法,自从在去年的PDC公告宣布LINQ,及今年波士顿的Tech-ED研讨会上,使用LINQ有非常好的接受度,下一代的Visual Studio(代号Orcas)内建LINQ Infrastructure结合Language与API两者的威力,具体支援多种语言与资料领域。
(祭司白话注解:意思就是以后只要用LINQ就可以同时应付SQL、XML、物件、类别的查询,透过LINQ可以达成一致性的查询模式,而不必每一种资料查询就准备一套个别的语法,像我SQL很强,但XML可能只会很基本的,但LINQ就可以消除这样的缺失,很容易达成一样强的目的。)
在此时ADO.NET Team开发小组已经建构一个名为ADO.NET Entities的资料Mapping技术(O/R Mapping),ADO.NET Entities将关连式资料表的实体结构提升到能够更精确代表Bussiness Entities的资料模型,如“Customer”及Order”,并且能够Mapping到多个关连式Tables与Views,你可以将ADO.NET Entities想象为用宣告的方式指定Bussiness Object的结构,并且能够加入商业逻辑到结构之中,同时透过威力强大的LINQ来查询Bussiness Object。ADO.NET Entities允许我们提供一个类似ADO.NET环境下共通的资料模型,并且能够被像报表、Replication与BI等高阶功能存取,对于广大主流的企业级应用程式,ADO.NET Entities允许程式开发人员定义复杂的关连式资料库Mapping(指O/R Mapping),如此在关连式资料库底层的Schema不变动情况下,而能够建立新的Bussiness Object结构。
<shape id="_x0000_i1026" style="WIDTH: 337.5pt; HEIGHT: 441.75pt" type="#_x0000_t75" alt=""><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/Code6421/image002.gif"><imagedata src="file:///C:%5CDOCUME~1%5CAdmin%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image002.gif" o:href="http://blog.sina.com.tw/myimages/43/4907/images/1151050119_3.gif"></imagedata></shape>
图一:Physical, logical, conceptual and multiple programming and presentation views of an Order.
<shape id="_x0000_i1027" style="WIDTH: 337.5pt; HEIGHT: 268.5pt" type="#_x0000_t75" alt=""><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/Code6421/image003.gif"><imagedata src="file:///C:%5CDOCUME~1%5CAdmin%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image003.gif" o:href="http://blog.sina.com.tw/myimages/43/4907/images/1151050119_2.gif"></imagedata></shape>
图二:Order Entry System circa 1985
<shape id="_x0000_i1028" style="WIDTH: 337.5pt; HEIGHT: 211.5pt" type="#_x0000_t75" alt=""><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/Code6421/image004.gif"><imagedata src="file:///C:%5CDOCUME~1%5CAdmin%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image004.gif" o:href="http://blog.sina.com.tw/myimages/43/4907/images/1151050119_1.gif"></imagedata></shape>
图三:Order Entry System circa 2005
以上两个在资料存取的程式开发主要的进步将会使得程式开发人员能够有更多的生产力,请检视Anders Hejlsberg and Sam Druker最近在channel 9 Session这方面所做的。
我们做了命名Schema简化,以便您能够较为容易识别这些科技:
*LINQ to ADO.NET包括了:
LINQ to DataSet
LINQ to Entities
LINQ to SQL(先前的DLinq)
*LINQ支援其他类型的资料型态包括了:
LINQ to XML(先前的XLinq)
LINQ to Objects
我们的开发团队正努力于下一代的Visual Studio并且实现这些技术于在一个统一的途径,以便让程式开发人员能够有非常棒的开发经验,我们在这提供了LINQ 5月号,并且注意今年底即将推出的Entities社群预览版。
以上翻译完毕!
参考资料
*The ADO.NET Entity Framework Overview (June 2006)
http://www.microsoft.com/downloads/details.aspx?FamilyId=E9BA57AA-2A27-4658-AD04-4380A2DF836C&displaylang=en
*Next Generation Data Access (June 2006)
http://www.microsoft.com/downloads/details.aspx?FamilyId=A917C7E1-D86C-4881-B984-FE9F490F9FB9&displaylang=en