2012-04-23 10 views
0

最初にEF4コードを使用してツリーを埋めて、ユーザーがレポートをフォルダに整理できるようにします。 私のモデルは、既存のデータベースには存在しないため、あまり単純ではありません。 Organization_Folder : EF4:永続化されていない要素

  • 継承クラスOrganization_Report:クラスを継承組織
    • 基本クラス: I 1つのデータベーステーブルは、モデル別の継承(階層毎の表)に2クラスにマッピングしました

      フォルダには、OrganizationインスタンスのコレクションであるChildrenプロパティがあります。 Organizationクラスでは、私はNumParentメンバーと、親フォルダを指すNavigation Property:Parentを持っています。

      最上位要素にはNumParent = nullがあります。

      親を持たないレポート(NumParent = null)を「仮想」(すなわち、非永続化)フォルダにグルーピングする必要があります:「構成されていない要素」。

      言い換えれば、データベースを照会するときに、「構成されていない要素」フォルダを作成し、NumParent = Nothingを持つすべてのレポートに対してParentを設定する必要があります。 データベースに保存するときに、このフォルダを追加しないようにします。

      EFで可能ですか?

  • +1

    答えが曖昧な質問です。あなたのデータモデルが何で、何をしたいのかははっきりしていません。 –

    +0

    はい、そうです。私はより正確にしようとします – boblemar

    答えて

    1

    EFとは関係ありません。アプリケーションロジックです。 EFは、データをロードまたは永続化するツールです。追加のものが必要な場合は、それを自分で実装する必要があります。この場合、おそらくObjectContext.ObjectMaterializedのハンドラを実装して、ロードされたエンティティにダミーのフォルダを割り当て、ObjectContext.SaveChangesをオーバーライドするか、ObjectContext.SavingChangesハンドラを実装して変更を永続化する前にそのダミーフォルダを削除する必要があります。これは、オブジェクトツリーを修正し、あなたのダミーフォルダへの参照がないことを確認してください。さもなければそれは永続化されます。また、変更を保存した後にデータにその特別なフォルダが含まれないことを意味します。

    DbContext APIを使用する場合でも、コンテキストをObjectContextに変換してハンドラを割り当てることができます。

    +0

    ありがとうございます。これは非常に難しいと思う。 – boblemar

    関連する問題