设置实体框架时存在多重冲突

问题描述 投票:1回答:1

我有一个更复杂的问题here

但我想我会简化它。

这是我的dummied类(这个基于的结构来自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; }
}

我已经尝试了很多东西,所以希望这个简化版可以帮助别人帮助我。

总之,我想搜索:

  • 左手。属性并查看右手的属性
  • 同样,我想搜索Right Hand.Property并查看Left Hand的属性

总而言之,我不关心Linker,除了那是将LeftHand与RightHand联系起来的东西。 LeftHand和RightHand是一对一的。

    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 :: Multiplicity在关系'Linker_RightHand'中的角色'Linker_RightHand_Source'中无效。由于“从属角色”属性不是关键属性,因此从属角色的多重性的上限必须为“*”。

这里与其他多重性答案的不同之处在于中间链接器表。

c# entity-framework code-first ef-code-first-mapping
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.