【问题标题】:Subsonic - Filter by XML Column DataTypeSubsonic - 按 XML 列数据类型过滤
【发布时间】:2012-12-01 04:07:09
【问题描述】:

我已经下载了 Subsonic 3.0.0.3,并且我的 MSSQL 数据库中有一个 XML DataType。该属性以字符串形式返回,这很好,但是如何创建一行代码以按该列中的内容进行过滤。

如果我尝试from x in Table.All() where x.XMLColumn.Contains("test") 之类的方法,它会引发异常,因为虽然该属性是一个字符串,并且上面的内容在将其转换为 SQL 时会编译,但它对于该列类型不正确。

【问题讨论】:

    标签: subsonic subsonic3


    【解决方案1】:

    有趣 - 我没有遇到过在 DB 调用中查询 XML,但我可以看到它会有什么用处。为了解决你的问题,我建议现在使用 SPROC 或使用简单查询工具,它可以更好地明确表达。 http://subsonicproject.com/docs/Simple_Query_Tool

    您还可以使用 CodingHorror,它允许您编写自己的 SQL(参数化) http://subsonicproject.com/docs/CodingHorror

    【讨论】:

      【解决方案2】:

      另一种选择是将属性值转换为对象,然后调用其ToString() 方法。这会导致 Subsonic linq 提供程序将 XMLColumn 值显式转换为 NVARCHAR(MAX)

      from x in Table.All() where ((object)x.XMLColumn).ToString().Contains("test")
      

      您需要转换,因为 Linq 提供程序在转换为 SQL 时将忽略 String.ToString() 方法调用。这是一种 hack,但它确实解决了问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-17
        • 1970-01-01
        • 2021-11-15
        • 1970-01-01
        • 1970-01-01
        • 2019-06-03
        相关资源
        最近更新 更多