在EF 6 Code中,首先如何创建多对多的双向链接,每一方都是聚合,但是一方拥有这些链接?

时间:2014-12-19 05:10:39

标签: c# entity-framework entity-framework-6

我有以下场景:两个聚合实体,Entry和Tag。他们有很多关系,没有一方拥有另一方,但Entry需要拥有Entry和Tag之间的链接。基本上标签将继续存在,即使链接到它的所有条目都消失了,并且条目只应创建/删除链接本身,它不应该尝试在创建或删除时保留标记。

到目前为止,我还没有找到在EF 6中实现此目的的方法,但我的大部分经验都是使用Java和Spring Data / Hibernate。

public class Tag : AbstractEntity{
        //public User User { get; private set; }
        public string Name { get; internal set; }
        [InverseProperty("Tags")]
        public virtual ICollection<Entry> Entries {get; private set;}

        protected Tag() { }
}

public class Entry : AbstractEntity
{
    public string Desc { get; private set; }
    public DateTime DateTime { get; private set; }
    [InverseProperty("Entries")]
    public virtual ICollection<Tag> Tags { get; set; }

    protected Entry()
    {
    }
}

我的映射如下所示:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        modelBuilder.Entity<Entry>().HasMany<Tag>(x => x.Tags).WithMany(x => x.Entries).Map(m => m.MapLeftKey("EntryId").MapRightKey("TagID").ToTable("EntryTag"));
        base.OnModelCreating(modelBuilder);
}

0 个答案:

没有答案