none
Entity FrameworkのデータソースをLinq to Xmlで取得したデータにしたい RRS feed

  • 質問

  • Visual studio 2010でEFのバージョンは分かりません。

    現在EFでedmxを作りSQL Serverに接続してEntityDataSourceを介してGridViewで表示、編集、削除、追加ができる状態になっています。

    これをデータ元をSQL ServerからXmlに変えたいのです。Xml自体は静的なファイルではなくhttpで取得します。

    XmlファイルだとEntityDataSourceではなくXmlDataSourceを使うのだと思いますがあくまでedmxのEntityに適合させたいのです。多分Linq to xmlで適合させるのが良いとは思います。

    イメージとしてはEntityDataSourceにデータを取得するイベントがあって、そこでDBではなくLinq to XMLでデータを取得しEntityにセットするとか、insert,update,deleteもそれに対応したリクエストをhttpで送信するといったイメージです。EntityDataSourceではなくedmxで定義したクラスを継承して動作を変えるといった方法でもよいです。

    うまい方法があればご教授ください。

    2012年12月19日 1:34

回答

  • 自己解決しました。

    XmlDataSource.DataにXmlのテキストを代入しましたが、上手くいかなかったのでよく調べたらXmlの形式が

    <?xml version="1.0" encoding="utf-8" ?>
    <status_types>
      <status_type st_id="1" st_name="1st_name" 独自のプロパティ="1独自のプロパティ" />
      <status_type st_id="2" st_name="2st_name" 独自のプロパティ="2独自のプロパティ" />
    </status_types>
    

    という属性がプロパティ名だと上手くいきました。最初内部のタグ名にプロパティ名、InnerTextにプロパティ値だったので上手くいきませんでした。

    Entityをそのまま使っているわけではありませんが、今のところ一番解決に近く可能ならばEntityで出来るようにしたいところですが、今回はこれで解決とさせていただきます。
    • 回答としてマーク 和和和 2012年12月19日 4:58
    • 編集済み 和和和 2012年12月19日 4:59
    2012年12月19日 4:58

すべての返信

  • 自己解決しました。

    XmlDataSource.DataにXmlのテキストを代入しましたが、上手くいかなかったのでよく調べたらXmlの形式が

    <?xml version="1.0" encoding="utf-8" ?>
    <status_types>
      <status_type st_id="1" st_name="1st_name" 独自のプロパティ="1独自のプロパティ" />
      <status_type st_id="2" st_name="2st_name" 独自のプロパティ="2独自のプロパティ" />
    </status_types>
    

    という属性がプロパティ名だと上手くいきました。最初内部のタグ名にプロパティ名、InnerTextにプロパティ値だったので上手くいきませんでした。

    Entityをそのまま使っているわけではありませんが、今のところ一番解決に近く可能ならばEntityで出来るようにしたいところですが、今回はこれで解決とさせていただきます。
    • 回答としてマーク 和和和 2012年12月19日 4:58
    • 編集済み 和和和 2012年12月19日 4:59
    2012年12月19日 4:58
  • 表題と自己解決の内容が違うようですが?

    何にせよ解決とのことですので、今更レスは不要かもしれませんが・・・

    > Entity FrameworkのデータソースをLinq to Xmlで取得したデータにしたい

    意味がよく分かりません。

    Entity Framework を xml に使うというのは無理っぽいです。xml ファイルを読んだり書き込んだりするプロバイダを独自に作るなら可能かもしれませんが、そこのところが問題です。プロバイダに Linq to Xml を使うことを考えておられるとしたら、それは違うような気がします。

    Linq to Xml を使った Xml ファイルを読み書きするためのクラスファイルとObjectDataSource を組み合わせるという手段はあると思いますが。

    Linq to XML Tutorial
    http://www.joe-stevens.com/2010/01/08/linq-to-xml-tutorial/

    Linq to Xml を使わなくても、以下のようにする方法もあります。

    XML ファイルの更新操作
    http://surferonwww.info/BlogEngine/post/2010/09/27/Delete-insert-and-update-operations-of-XML-file.aspx


    > XmlDataSource.DataにXmlのテキストを代入しましたが、

    結局、XmlDataSource を使ったそうですが、表示するだけならともかく、XmlDataSource には更新機能がないので、必要な場合は自力でコードを書いて更新機能を実装する必要があります。

    2012年12月19日 12:42