エンティティフレームワーク4.1コード最初:1つのエンティティのみでICOLLECTIONを持つ多くの人の多く
-
24-10-2019 - |
質問
これらのクラスを考慮して、最初に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();
}
}
所属していません StackOverflow