1

如何有效地结合直接 SQL 查询和 Linq To SQL 查询?Linq To SQL 不支持 XQuery。所以我必须将 SQL 的结果与 XQuery 和基于列的 Linq To SQL 结合起来?

任何指针表示赞赏。谢谢!

4

1 回答 1

3

Chris Cavanagh 有几篇博客文章提供了将 XQuery 与 LINQ to SQL 结合使用的选项。

  1. 带有 LINQ to SQL 的 SQL Server XQuery为解决方案提供了框架,该解决方案涉及将 XQuery 嵌入到用户定义的函数中,这些函数可以从 LINQ to SQL 访问

  2. 修改 LINQ to SQL 命令文本修改 LINQ to SQL 命令文本再次提供了一种扩展 LINQ to SQL 查询执行的方法,方法是操纵生成的命令文本以支持 XQuery 构造。

最终结果是您实际上可以直接从 DataContext 中使用 XQuery,方法是编写如下所示的代码:

var results = from r in MyXmlFieldTable
   let date = context.XQueryDateTime( r.XmlValues, "MyContainer/MyDateTime" )
   where date < DateTime.Now.AddDays( -5 )
   select new
   {
       Date = date,
       FirstName = context.XQueryString( r.XmlValues, "MyContainer/FirstName" ),
       LastName = context.XQueryString( r.XmlValues, "MyContainer/LastName" )
   };

(但是,如果您发现需要做很多此类事情,那么使用 MongoDB 或 RavenDB 之类的文档数据库可能会更好,它们用于处理分层/后关系模型)

作为关于 XQuery 和 SQL 的一般说明,您将在不同版本中获得不同程度的支持。具体来说,SQL 2005 中的 XQuery 支持是后续版本中支持的有限子集。

于 2012-08-16T23:34:09.457 回答