写点什么

VS2008 技术快讯:LINQ to XSD 和 LINQ to Stored XML

  • 2007-12-09
  • 本文字数:1615 字

    阅读完需:约 5 分钟

微软可编程数据团队的主发开发领导—— Shyam Pather XML 2007 大会上进行了一个主题为 LINQ to XML:Visual Studio 2008、Silverlight 和 Beyond 的演讲,另外,他还谈到有关 LINQ to XML 现在和未来和一些技术话题。

演讲的前两个部分讲述了 LINQ to XML 的基础和当前的高级 XML 特性:

  • LINQ to XML 相关类,如 XDocument、XElement、XAttribute、XNamespace、XName

  • VB XML Literals

  • 智能感知支持

  • 有效的运算符重载

  • 通过对 XElement 和 XAttribute 进行转型操作,可绕过.Value 属性对内容进行操作

  • 可置空类型和空合并运算符

  • 桥接类,可以通过 System.Xml API 访问 LINQ to XML 树

演讲的幻灯片可以通过会议的网站下载。

在演讲的第三部分中,Shyam 展示了未来LINQ to XML 的一些扩展:LINQ to XSD 和LINQ to Stored XML。

LINQ to XSD 最早是由微软 XML 团队在 2006 年 11 月发布,其中包括一个为 2006 年 5 月 LINQ 的 CTP 发布的 Alpha 0.1 预览版:

LINQ to XSD 为.NET 开发者提供了基于 LINQ to XML 的类型化 XML 编程的支持。程序员使用 LINQ to XML 对一般的 XML 树进行操作,而 LINQ to XSD 则被用来对类型化 XML 树进行操作,这些 XML 树是一些将特定的 XML schema(XSD)类型模式化为.NET XML 类型后的实例。为了帮助理解,请思考一下下面的 C# 3.0 程序片段,它用 LINQ to XML 查询 XML 树中所有项目的总数以生成购买订单: (from item in purchaseOrder.Elements(“Item”)
select (double)item.Element(“Price”) * (int)item.Element(“Quantity”)
).Sum();

使用 LINQ to XSD,这一查询可以以更加简洁和类型安全的方式来实现:

(from item in purchaseOrder.Item
select item.Price * item.Quantity
).Sum();

2007 年 7 月,针对 Visual Studio 2008 Beta 1 的另一个 Alpha 0.2 预览版发布,但在 VS 2008 Beta2 中没有出现 LINQ to XSD 预览版,这可能是因为该技术的带头人 Ralf Lämmel 博士离开了微软。OakLeaf Systems 的首席咨询师 Roger Jennings 了解 LINQ to XSD 的详细历史,他提及此事并要求微软提供相应的升级。

Ralf Lämmel 更新了他的 LINQ to XSD 实现,在 2006 年 11 月为 2006 年 5 月 LINQ CTP 版提供的 Alpah 0.1 预览版,和为 2007 年 6 月 5 号的 Orcas Beta 1 中提供的 Alpha 0.2 预览版中可以进行增强类型化 LINQ to XML 查询,之后 Lämmel 博士就返回了德国,在科布伦次大学(University of Koblenz)的计算机科学系担任全职教授。对于 VS 2008 最终版中的 LINQ to XSD 更新,负责 LINQ to XML 的微软 XML 团队还没有正式表态,希望最终不会因为人员变化导致这个非常有用的 LINQ 消失。

LINQ to Stored XML(数据库中的 XML 形式)在 SQL Server 2005 中提供了多种针对 XML 数据类型列的查询方式,目标是通过提供“从 XML schema 到类的映射”和“从 LINQ 表达式到服务器 XQuery 表达式的查询转换”来实践“提供增强类型化 LINQ 体验,胜过 XML 数据类型列中的数据”的理念,下面的查询示例是在一个将‘Resume’作为一个 XML 数据类型列的 AdventureWorks 数据库中进行的:

查询: var q = from o in _data.JobCandidates

where o.Resume.Skills.Contains(“production”)

select o.Resume.Name.Name_Last;

输出:

SELECT [Extent1].[Resume].query(
N’declare namespace r=“http://…/adventure-works/Resume”;
/*[1]/r:Name/r:Name.Last’
).value(N’.’, N’nvarchar(max)’) AS [C1]

FROM [HumanResources].[JobCandidate] AS [Extent1]

WHERE cast(1 as bit) = ([Extent1].[Resume].query(
N’declare namespace r=“http://…/adventure-works/Resume”;
contains(/*[1]/r:Skills, “production”)’
).value(N’.’, N’bit’))

这次演讲是第一个证明 LINQ to XSD 还在继续发展、LINQ to Stored XML 也正在进行中的迹像,但可惜不知道发布日期,甚至连何时能提供预览也都没有提及。

查看英文原文 Post-VS 2008-Technology: LINQ to XSD and LINQ to Stored XML

2007-12-09 19:16690
用户头像

发布了 90 篇内容, 共 12.0 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

Spring 5 中文解析数据存储篇-Spring框架的事物支持模型的优势

青年IT男

Spring5 数据存储

切片真的是引用类型嘛

Gopher指北

Go 语言

“度拉拉”升职记:中国语音助手的成长史

脑极体

最新:央行副行长详解数字人民币,信息量巨大!

CECBC

人民币 数字人民币

活着

GongTeng95

第六周学习总结

Vincent

极客时间 极客大学

对比 Redis 中 RDB 和 AOF 持久化

超超不会飞

Linux基金会唯一官方微服务培训课程免费学 | 快速构建稳定可靠的微服务应用

TARS基金会

开源 微服务 培训 Linux基金会 TARS

裳雨

GongTeng95

写作 写作平台

数字货币量化交易,量化对冲搬砖系统开发

13530558032

python——自定义序列类

菜鸟小sailor 🐕

这是一个奇怪的因果关系

陈磊@Criss

摄影

111

不在调上

数字货币交易所源码开发,区块链交易系统搭建服务商

13530558032

关于数据存储引擎结构,没有比这篇更详细的

华为云开发者联盟

数据库 nosql 存储

anyRTC语音开黑demo正式上线

anyRTC开发者

音视频 WebRTC 直播 RTC

MySQL数据库技术与应用:数据查询

华为云开发者联盟

MySQL 数据库 存储

实践案例丨云连接CC实现跨区域多VPC与线下IDC Server互联

华为云开发者联盟

云服务 IDC

再深入一点|binlog和relay-log到底长啥样?

艾小仙

Java MySQL 数据库 架构设计

iPad Air把它大哥iPad Pro按在地上摩擦

徐说科技

分库分表中间件的高可用实践

无毁的湖光

MySQL TCP 高可用 分库分表 高性能

数字资产会成为人类最大的资产

CECBC

数字资产 数字化时代 孙正义

互联网只改变了商业的一部分,区块链将从根本上重构商业

CECBC

区块链 去中心化 互联网金融

【获奖名单公布】程序员摇身一变摄影师,属于技术人的摄影展示大赛

InfoQ写作社区官方

写作平台 征稿 热门活动

追光逐影:焦距与镜头语言

北风

创作 生活 摄影 光影 摄影征文

大数据下单集群如何做到2万+规模?

华为云开发者联盟

大数据 集群

一次旅途

GongTeng95

别闹,我用1个BTC居然买不了一个爱马仕包

猫Buboo

区块链+

flutter之踩坑的日子(2)

霜蓝手环

小程序flutter, 跨平台 Flutter Android Apk

USDT支付系统开发技术方案,数字货币承兑商支付

13530558032

高速路二维码报警定位系统开发,二维码报警定位功能

13530558032

VS2008技术快讯:LINQ to XSD和LINQ to Stored XML_.NET_Hartmut Wilms_InfoQ精选文章