主要密钥与实体框架代码的一对一关系

Die*_*iro 3 entity-framework ef-code-first

当我尝试使用Code First创建一对一关系时,我当前收到以下错误:System.Data.Edm.EdmAssociationEnd :: Multiplicity在关系'C001_Holding_Teste_C001_Holding'中的角色'C001_Holding_Teste_C001_Holding_Source'中无效.由于从属角色是指关键属性,因此从属角色的多重性的上限必须为1.我的实体定义如下:

[Table("C001_Holding", Schema = "Cad")]
public partial class C001_Holding
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int C001_Id { get; set; }

    [MaxLength(16)]
    public string C001_Codigo { get; set; }

    [MaxLength(100)]
    public string C001_Descricao { get; set; }
}

public class C001_Holding_Test
{
    [Key]
    public int C001_Id { get; set; }
    [MaxLength(100)]
    public string C001_TestInfo { get; set; }

    [ForeignKey("C001_Id")]
    public virtual C001_Holding C001_Holding { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我不想用Fluent创建这些关系,有谁知道为什么会这样?

韩国社交协会.

Sla*_*uma 5

可以将ForeignKey属性放在导航属性上,然后指定要作为外键使用的属性的名称(这就是您所做的).或者,您可以将其放在外键属性上,然后指定表示关系的导航属性的名称.这看起来像:

public class C001_Holding_Test
{
    [Key]
    [ForeignKey("C001_Holding")]
    public int C001_Id { get; set; }

    [MaxLength(100)]
    public string C001_TestInfo { get; set; }

    public virtual C001_Holding C001_Holding { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

由于某种原因,第二个选项在第一个选项发生错误时有效.(这对我来说感觉就像一个错误,因为两个选项应该代表相同的关系.或者实际上存在语义差异,我看不到......)