相关疑难解决方法(0)

使用Entity Framework Database First从SQL查询Xml

我需要使用Entity Framework,LINQ在我的asp.net mvc(C#)应用程序中查询SQL中的XML数据.

我有一个XMLValue包含数据的列

<MetaData>
     <Reviews>1</Reviews>
     <Rating>1</Rating>
</MetaData>
Run Code Online (Sandbox Code Playgroud)

我需要从xml中获得所有Customers拥有Rating1的人.我已经提到了这个stackoverflow帖子,我无法实现它.

我添加了SQL函数并将其添加到我的edmx:

CREATE FUNCTION [dbo].[FilterCustomersByRating] 
    (@Rating int) 
RETURNS TABLE
AS 
RETURN
    SELECT XMLTest.*
    FROM XMLTest
    CROSS APPLY XMLValue.nodes('//MetaData') N(C)
    where N.C.value('Rating[1]', 'int')=@Rating
GO
Run Code Online (Sandbox Code Playgroud)

以及DB功能:

[DbFunction("XMLDBModel.Store", "FilterCustomersByRating")]
public static IQueryable<XMLTest> MyXmlHelper(int rating)
{
            throw new NotImplementedException("You can only call this function in a LINQ query");
}
Run Code Online (Sandbox Code Playgroud)

下面是我在帖子中完全尝试的linq查询,但是无法使用该函数并且它会抛出错误.

 var _dbCustomers = (from x in _context.XMLTests
                     where MyXmlHelper(1).Where(xh=> xh.XMLValue.Contains("1"))
                     select x);
Run Code Online (Sandbox Code Playgroud)

错误:

Cannot implicitly convert type 'System.Linq.IQueryable<XMLTest>' …
Run Code Online (Sandbox Code Playgroud)

c# xml linq sql-server entity-framework-6

4
推荐指数
1
解决办法
4543
查看次数

标签 统计

c# ×1

entity-framework-6 ×1

linq ×1

sql-server ×1

xml ×1