0

我对 c# mvc3 中的存储库模式有一个非常基本的问题。

我正在使用 EF4.1,数据库中有数百万条记录。

我需要根据某些子句从 SQL 数据库中获取一些数据。获取的数据可能数以万计,所以我当然必须使用分页和排序。

这里的问题是我需要检查作为字符串存储在表中的 XML 中的元素以及其他一些字段的子句。

喜欢:这是我的数据模型:

    public string ReportXML { get; set; }
    public DateTime CreatedOn { get; set; }

报告 XML 包含字段“ VehicleNumber”,这是我的搜索条件以及CreatedOn字段。

什么应该是将此 XML 作为字符串播放的最佳方式,以便仅从 DB 中获取满足该子句的匹配项。

4

1 回答 1

4

这不是实体框架的情况。更糟糕的是,您的数据库表没有足够的结构来处理此类查询。

要在 SQL Server 中查询 XML 数据,您需要使用XML SQL 数据类型- 而不是字符串。一旦使用 XML 数据类型,您就可以使用 XPath 或 XQuery 来查询其内容(您还可以索引内容以提高此类查询的性能)。要编写此类查询,您需要使用本机 SQL。EF 不支持 XML 列。

如果您想从 EF 中使用它,您可以尝试用视图替换映射表,该视图将使用 XML 列查询表,但如果不使用存储过程或 EDMX 文件中映射的自定义 SQL 命令,您将无法插入或更新数据.

于 2012-04-13T07:59:22.230 回答