2017-10-17 21 views
0

ハロー問題が発生しました:1対1エンティティを多対多に結合する方法

私は、デバイス、受信トレイ、およびサフィックスと言う3つのモデルがあります。 デバイスは1つの受信トレイのみを持ち、受信トレイは多くのデバイスに割り当てることができます 受信トレイとサフィックスは、多対多の関係テーブルに接続されています。

受信トレイのための流暢API(セクション名)と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

「デバイス」は、複数の関係でモデル化された受信ボックスとサフィックスのまったく同じ組み合わせに接続できますか、またはスーパーセット/サブセット/独立したリレーションシップをモデル化できますか? – grek40

+0

デバイスと受信トレイが1対多の関係と受信トレイを持ち、サフィックスに多対多の関係があると正しく理解していれば、 –

+0

@ RJ-はいそれは状況です –

答えて

0

メインテーブルにIDの組み合わせを入れてみました。

関連する問題