尝试使用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; }
}
我不想使用Fluent来创建这些关系,有谁知道为什么会这样?
韩国社交协会
答案 0 :(得分: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; }
}
出于某种原因,第二个选项在第一个选项发生错误时有效。 (这对我来说感觉就像一个错误,因为两个选项应该代表相同的关系。或者实际上存在语义差异,我看不到......)