如何有效地结合直接 SQL 查询和 Linq To SQL 查询?Linq To SQL 不支持 XQuery。所以我必须将 SQL 的结果与 XQuery 和基于列的 Linq To SQL 结合起来?
任何指针表示赞赏。谢谢!
如何有效地结合直接 SQL 查询和 Linq To SQL 查询?Linq To SQL 不支持 XQuery。所以我必须将 SQL 的结果与 XQuery 和基于列的 Linq To SQL 结合起来?
任何指针表示赞赏。谢谢!
Chris Cavanagh 有几篇博客文章提供了将 XQuery 与 LINQ to SQL 结合使用的选项。
带有 LINQ to SQL 的 SQL Server XQuery为解决方案提供了框架,该解决方案涉及将 XQuery 嵌入到用户定义的函数中,这些函数可以从 LINQ to SQL 访问
修改 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 支持是后续版本中支持的有限子集。