1

次のモデルのエンティティ フレームワーク 5.0 で FluentAPI を使用して複合オブジェクトをマップしようとしています。

public class Category
{
    public int CategoryId { get; set; }
    public string CategoryName { get; set; }
    public virtual ICollection<Category> Children { get; set; }
}

これまでのところ、次のようなうまくいかない多くの方法を試しました。

HasKey(t => t.CateroryId);
HasOptional(c => c.Children)
   .WithMany()
   .HasForeignKey(c => c.CateroryId);

どうすればそれができるのでしょうか?

4

1 に答える 1

3

あなたが何をしようとしているのかを理解していれば、 aCategoryは子として多くのカテゴリを持つことができます。

独立した関連付けを使用してそれを行う方法があるかもしれませんが、私は過去に同様の外部キー マッピングといくつかの追加プロパティを使用してこれを行いました。

Category親子関係を追跡できるように、追加のプロパティを追加します。

public class Page
{
    public int CategoryId { get; set; }
    public string CategoryName { get; set; }
    public int? ParentID { get; set; } // Nullable (Parent is optional).

    // Navigation properties
    public virtual Category Parent { get; set; } // Optional Parent
    public virtual ICollection<Category> Children { get; set; }
}

その後、次のように構成できるはずです (マッピングが設定されている場所によって異なります)。

this.HasMany(c => c.Children)        // Many Children
    .WithOptional(c => c.Parent)     // Optional Parent
    .HasForeignKey(x => x.ParentID);
于 2013-09-02T16:19:49.030 に答える