エンティティフレームワーク4.1コード最初:1つのエンティティのみでICOLLECTIONを持つ多くの人の多く

StackOverflow https://stackoverflow.com/questions/5804540

質問

これらのクラスを考慮して、最初にEF 4.1コードを使用して、これは(慣習ごとに)ページとタグの間に多目的な関係を残します。

public interface ITaggable
{
  ICollection<Tag> { get; set; }
}

public class Page : ITaggable
{
  public virtual ICollection<Tag> { get; set; }
}

public class Tag
{
  public virtual ICollection<Page> { get; set; }
}

私は他のクラスをたくさん持っているので、それは ITaggable これらすべてのコレクションを追加する必要があります Tag:

public class Tag
{
  public virtual ICollection<Page> { get; set; }
  public virtual ICollection<Post> { get; set; }
  public virtual ICollection<Event> { get; set; }
  ...
}

これらのプロパティを除外した場合 Tag EFは1対多い関係を生成します。除外する方法はありますか ICollection<T> の上 Tag とにかく、多くの多くの関係を取得しますか?

(述べる: ICollection<ITaggable> の上 Tag うまくいきません。)

役に立ちましたか?

解決

Fluentマッピングを使用する必要があります。

public interface ITaggable
{
  ICollection<Tag> { get; set; }
}

public class Page : ITaggable
{
    ...
    public virtual ICollection<Tag> Tags { get; set; }
}

public class Tag
{
    ...
}

public class Context : DbContext
{
    public DbSet<Tag> Tags { get; set; }
    public DbSet<Page> Pages { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Page>()
                    .HasMany(p => p.Tags)
                    .WithMany();
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top