我有两个班级:
主要课程:
public class CCourseDetailModel
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int CourseDetailId { get; set; }
[ForeignKey("CourseOutcomes")]
public int CourseOutcomesId { get; set; }
public virtual CACourseOutcomesModel CourseOutcomes { get; set; }
}
依赖类:
public class CACourseOutcomesModel
{
[Key, ForeignKey("CourseDetail")]
public int CourseOutcomesId { get; set; }
[Required]
public virtual CCourseDetailModel CourseDetail { get; set; }
}
我有10个左右的类似的类,1对1的关系可以正常工作。这是唯一一个给我以下错误:
CACourseOutcomesModel_CourseDetail_Target :: Multiplicity在Role&CACourseOutcomesModel_CourseDetail_Target'在 关系&CACourseOutcomesModel_CourseDetail'。因为 依赖角色属性不是关键属性,即上限 依赖角色的多样性必须是' '。*
知道我哪里出错了吗?需要一双新鲜的眼睛。谢谢!
答案 0 :(得分:4)
在一对一的关系中,一端必须是委托人而另一端必须依赖,因此双方都不能拥有FK财产。删除主体(CCourseDetailModel
)和CACourseOutcomesModel
中不需要使用Required
属性的FK属性。使用ForeignKey
属性,您已经告诉EF谁是从属端。
在Fluent Api中将是:
modelBuilder.Entity<CACourseOutcomesModel>()
.HasRequired(p => p.CourseDetail)
.WithOptional(p => p.CourseOutcomes);
所以你的模型应该是这样的:
public class CCourseDetailModel
{
[Key]
//[DatabaseGenerated(DatabaseGeneratedOption.Identity)] don't need this, it's the configuration by default.
public int CourseDetailId { get; set; }
public virtual CACourseOutcomesModel CourseOutcomes { get; set; }
}
public class CACourseOutcomesModel
{
[Key, ForeignKey("CourseDetail")]
public int CourseOutcomesId { get; set; }
public virtual CCourseDetailModel CourseDetail { get; set; }
}