dav*_*ser 1 mapping many-to-many entity-framework ef-code-first entity-framework-4.1
给定这些类,使用EF 4.1 Code First,这将(按照惯例)留给页面和标记之间的多对多关系:
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; }
}
Run Code Online (Sandbox Code Playgroud)
由于我有一堆其他类,实现ITaggable
我必须将所有这些集合添加到Tag
:
public class Tag
{
public virtual ICollection<Page> { get; set; }
public virtual ICollection<Post> { get; set; }
public virtual ICollection<Event> { get; set; }
...
}
Run Code Online (Sandbox Code Playgroud)
如果我在Tag
EF 上省略这些属性会产生一对多的关系.有没有办法离开了ICollection<T>
上Tag
并获得了许多一对多的关系呢?
(备注:ICollection<ITaggable>
on 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();
}
}
Run Code Online (Sandbox Code Playgroud)