ここでもっと複雑な質問があります
しかし、私はそれを単純化すると思いました。
これが私のダミークラスです(これが基づいている構造は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' では多重度が無効です。従属ロール プロパティはキー プロパティではないため、従属ロールの多重度の上限は「*」である必要があります。
ここで他の多重度の回答と異なるのは、中央のリンカー テーブルです。