1

テンプレートクラスがあります

public class Template
{
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Category> Categories { get; set; }
    public virtual Template RelatedTemplate { get; set; }
    public virtual Field RelatedTemplatePrimaryField { get; set; }
    public virtual ICollection<Field> Fields { get; set; }
}

そしてフィールドクラス

public class Field
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Min { get; set; }
    public int Max { get; set; }
    public bool AllowEmpty { get; set; }
    public bool IsCollection { get; set; }
    public virtual ICollection<Template> Templates { get; set; }
}

問題は、多対多の関係を作成していないことです。フィールドテーブルにFKを追加するだけです。多対多の関係が必要です。

Fields ICollection<Field> Fields

ICollection<Template> Templates

編集:私が削除した場合

public virtual Template RelatedTemplate { get; set; }
public virtual Field RelatedTemplatePrimaryField { get; set; }

それはうまくいきます...何かアイデアはありますか?

4

1 に答える 1

4

これは、EFが自分の関係を正しく認識するのを支援する必要がある場合です。データ注釈によってそれを行うことができます:

[InverseProperty("Fields")]
public virtual ICollection<Template> Templates { get; set; }

または流暢なAPIによる:

modelBuilder.Entity<Template>()
            .HasMany(t => t.Fields)
            .WithMany(f => f.Templates);
于 2012-08-30T21:00:49.600 に答える