gpt4 book ai didi

c# - 查询 XML 的 Entity Framework

转载 作者:行者123 更新时间:2023-11-30 12:31:25 24 4
gpt4 key购买 nike

我有一个问题。也许你们中的一位专家可以在这里提供帮助。我正在查询的表有 2 个 xml 列。我也需要对这些列中的 xml 数据执行查询(在我的高级搜索功能中)。问题是我正在使用 Entity Framework ,但它不支持。即使我尝试执行“ObjectQuery.Execute”,它也会导致语法错误。那么我在这里有哪些选择?

  1. 修改表并为我需要查询的 XML 数据添加列,以便我可以使用 Entity Framework 执行操作?
  2. 只是为了高级搜索使用 ODBC 并在我可以使用 SQLXml 的地方进行常规查询?这里的潜在威胁是什么[如多重连接、连接过多、设计/架构师的憎恶等]?
  3. 或者有人可以对此提出更好的解决方案吗?

谢谢,

阿里纳希德

最佳答案

EF 将 SQL Server XML 类型列映射到字符串。所以对于这个定义:

CREATE TABLE [dbo].[XmlData](
[ID] [int] IDENTITY(1,1) NOT NULL,
[XmlTestColumn] [xml] NOT NULL
)

您将拥有以下实体:

public partial class XmlData
{
public int ID { get; set; }
public string XmlTestColumn { get; set; }
}

并且能够将字符串加载到 XmlDocument 等中。这是一种方法。

如果您更喜欢针对 SQL Server 发出 native XML 查询,则需要

  1. 定义或选择合适的实体类型;
  2. 在您的 XML 查询中使用 Database.SqlQuery:

    var query = context.Database.SqlQuery(@"SELECT it.Id, it.Name, it.SomeData, t2.someotherdata FROM Table1 as it CROSS APPLY ...");

ObjectQuery 反对概念模型,不支持原生查询。

关于c# - 查询 XML 的 Entity Framework ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13556604/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com