c# – 查询Xml的实体框架

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

>修改表并为我需要查询的XML数据添加列,以便我可以使用Entity Framework来执行操作?
>只为高级搜索使用ODBC并定期查询我可以使用SQLXml?这里有哪些潜在的威胁[比如多重连接,连接太多,设计/建筑师的憎恶等]?
>或者任何人都可以提出更好的解决方案吗?

谢谢,

阿里纳希德

最佳答案 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发出本机XML查询,则需要执行此操作

>定义或选择合适的实体类型;
>将Database.SqlQuery与XML查询一起使用:

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

ObjectQuery针对概念模型工作,不支持本机查询.

点赞