实体框架4.1代码首先:仅在一个实体上具有偶像的许多代码
-
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
不起作用。)
解决方案
您必须使用流利的映射:
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