EF 代码第一个 1 对 1 关系错误
EF Code first 1 to 1 relationship error
我有两个 classes:
主要class:
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; }
}
依赖 class:
public class CACourseOutcomesModel
{
[Key, ForeignKey("CourseDetail")]
public int CourseOutcomesId { get; set; }
[Required]
public virtual CCourseDetailModel CourseDetail { get; set; }
}
我有 10 个左右相似的 classes,一对一的关系工作正常。这是唯一给我以下错误的错误:
CACourseOutcomesModel_CourseDetail_Target: : Multiplicity is not valid in Role 'CACourseOutcomesModel_CourseDetail_Target' in
relationship 'CACourseOutcomesModel_CourseDetail'. Because the
Dependent Role properties are not the key properties, the upper bound
of the multiplicity of the Dependent Role must be ''.*
知道我哪里出错了吗?请需要一双新眼睛。谢谢!
在一对一的关系中,一端必须是主要的,另一端必须是从属的,所以你不能在双方都有 FK 属性。删除主体 (CCourseDetailModel
) 中的 FK 属性,在 CACourseOutcomesModel
中您不需要使用 Required
属性。使用 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; }
}
我有两个 classes:
主要class:
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; }
}
依赖 class:
public class CACourseOutcomesModel
{
[Key, ForeignKey("CourseDetail")]
public int CourseOutcomesId { get; set; }
[Required]
public virtual CCourseDetailModel CourseDetail { get; set; }
}
我有 10 个左右相似的 classes,一对一的关系工作正常。这是唯一给我以下错误的错误:
CACourseOutcomesModel_CourseDetail_Target: : Multiplicity is not valid in Role 'CACourseOutcomesModel_CourseDetail_Target' in relationship 'CACourseOutcomesModel_CourseDetail'. Because the Dependent Role properties are not the key properties, the upper bound of the multiplicity of the Dependent Role must be ''.*
知道我哪里出错了吗?请需要一双新眼睛。谢谢!
在一对一的关系中,一端必须是主要的,另一端必须是从属的,所以你不能在双方都有 FK 属性。删除主体 (CCourseDetailModel
) 中的 FK 属性,在 CACourseOutcomesModel
中您不需要使用 Required
属性。使用 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; }
}