如何将一对一实体与多对多

时间:2017-10-17 09:55:20

标签: c# entity-framework

你好我有一个问题:

我有3个模型可以说设备,收件箱和后缀。 设备只能有一个收件箱,收件箱可以分配给许多设备 Inbox和Suffix通过联结表连接多对多关系。

收件箱的流畅api(SectionName)和sugffix看起来像:

            modelBuilder.Entity<SectionName>()
            .HasMany(suffix => suffix.SectionsSuffix)
            .WithMany(name => name.SectionsName)
            .Map(nameSuffix =>
            {
                nameSuffix.ToTable("SectionsNameSuffix");
                nameSuffix.MapLeftKey("SectionNameId");
                nameSuffix.MapRightKey("SectionSuffixId");
            });

模特没什么特别的:

收件箱:

[Table("SectionsName")]
public class SectionName : BaseEntity
{
    public SectionName()
    {
        SectionsSuffix = new List<SectionSuffix>();
    }

    [Required]
    public string Name { get; set; }

    public ICollection<SectionSuffix> SectionsSuffix { get; set; }
}

说明:

[Table("SectionsSuffix")]
public class SectionSuffix : BaseEntity
{
    public SectionSuffix()
    {
        SectionLines = new List<SectionLine>();
        SectionsName = new List<SectionName>();
    }

    [Required]
    public string Name { get; set; }

    public ICollection<SectionLine> SectionLines { get; set; }
    public ICollection<SectionName> SectionsName { get; set; }
}

和设备:

public class Device
{
    protected Device()
    {
    }

    public int Id { get; set; }

    public string Description { get; set; }

    public int? InboxId { get; set; }

    [ForeignKey("InboxId")]
    public virtual SectionName Inbox { get; set; }
}

所以基本上一个设备可以连接到收件箱和后缀的单一组合

后缀连接到另一个多对多,但这只是为了获取信息。

现在,我正在寻找一种方法,当我从设备实体获取记录时将知道使用了女巫组合。我正考虑在连接表中添加额外的列,但这会使事情变得复杂,我想知道是否还有另一种方法可以做到这一点。

1 个答案:

答案 0 :(得分:0)

将id组合放在主表中就可以了。