给定这些类,首先使用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 不起作用。)

有帮助吗?

解决方案

您必须使用流利的映射:

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