0

私はC#mvc3のリポジトリパターンについて非常に基本的な質問があります。リポジトリパターンmvc3

私はEF4.1を使用しており、データベースには数百万のレコードが含まれています。

SQLデータベースからいくつかの句に基づいてデータを取得する必要があります。フェッチされたデータは数千になる可能性があるので、確かにページングと並べ替えを使用する必要があります。

ここで問題となるのは、テーブルの文字列やその他のフィールドに格納されたXMLの要素をチェックする必要があるという問題です。

のように:これは私のデータモデルである:

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

レポートのXMLはCreatedOnフィールドと一緒に私の検索条件であるフィールド「VehicleNumber」が含まれています。唯一の句はDBからフェッチされ満たす一致するように、文字列として、このXMLと遊ぶのが最良の方法はどうあるべきか

..

答えて

4

エンティティフレームワークのケースではありません。あなたのデータベーステーブルは、そのような種類のクエリには十分な構造を持っていません。

SQLサーバーでXMLデータを照会するには、文字列ではなくXML SQL data typeを使用する必要があります。 XMLデータ型を使用すると、XPathまたはXQueryを使用してコンテンツをクエリできます(コンテンツのインデックスを作成して、そのようなクエリのパフォーマンスを向上させることもできます)。このような問合せを作成するには、ネイティブSQLを使用する必要があります。 EFはXML列をサポートしていません。

EFから使用する場合は、マッピングされたテーブルをXML列でテーブルを照会するビューに置き換えることはできますが、ストアドプロシージャやカスタムSQLコマンドも使用せずにデータを挿入または更新することはできませんEDMXファイルにマップされます。

関連する問題