1

ここでもっと複雑な質問があります

しかし、私はそれを単純化すると思いました。

これが私のダミークラスです(これが基づいている構造はNDCに由来するため、私はそれを制御できません):

public class RightHand
{
    [Key]
    public int RightHandId { get; set; }
    public string PropertyA { get; set; }

    [Required]
    public virtual Linker Linker { get; set; }
}

public class LeftHand
{
    [Key]
    public int LeftHandId { get; set; }
    public string PropertyB { get; set; }

    [Required]
    public virtual Linker Linker { get; set; }
}

public class Linker
{
    [Key]
    public int LinkerId { get; set; }
    [ForeignKey("RightHand")]
    public int RightHandId { get; set; }
    [ForeignKey("LeftHand")]
    public int LeftHandId { get; set; }
    public string PropertyC { get; set; }

    [Required]
    public virtual RightHand RightHand  { get; set; }
    [Required]
    public virtual LeftHand LeftHand  { get; set; }
}

私は非常に多くのことを試したので、この簡略化されたバージョンが誰かが私を助けるのに役立つことを願っています.

全体として、次のものを検索したい:

  • LeftHand.PropertyB を開き、RightHand のプロパティを確認します
  • 同様に、RightHand.PropertyA を検索して、Left Hand のプロパティを確認したい

全体として、LeftHand を RightHand にリンクするものを除いて、Linker は気にしません。LeftHand と RightHand は 1 対 1 です。

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<RightHand>()
            .Property(x => x.RightHandId)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

        modelBuilder.Entity<LeftHand>()
            .Property(x => x.LeftHandId)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

        modelBuilder.Entity<Linker>()
            .Property(x => x.LinkerId)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

        modelBuilder.Entity<Linker>()
            .HasRequired(nus => nus.LeftHand)
            ;

        modelBuilder.Entity<Linker>()
            .HasRequired(nuu => nuu.RightHand)
            ;
    }

ありがとう、私はVS2017、EF 6.2、Code First、SQL Serverを使用しています

さまざまな注釈を試しましたが、よくあるエラーは次のとおりです。

Linker_LeftHand_Source: : 関係 'Linker_LeftHand' のロール 'Linker_LeftHand_Source' では多重度が無効です。従属ロール プロパティはキー プロパティではないため、従属ロールの多重度の上限は「*」である必要があります。

Linker_RightHand_Source: : 関係 'Linker_RightHand' のロール 'Linker_RightHand_Source' では多重度が無効です。従属ロール プロパティはキー プロパティではないため、従属ロールの多重度の上限は「*」である必要があります。

ここで他の多重度の回答と異なるのは、中央のリンカー テーブルです。

4

1 に答える 1