考虑课程是否可以具有课程。因此,课程与课程之间的关系是1..0或1..1。 这些类是:
public class Course
{
public int Id {get; set;}
public Curriculum { get; set; }
}
public class Curriculum
{
[ForeignKey("Course")]
public int Id { get; set; }
public Course Course { get; set; }
}
我通过流利的api来配置关系,如下所示:
public class CourseConfiguration : EntityTypeConfiguration<Course>
{
public CourseConfiguration()
{
HasOptional(course => course.Curriculum)
.WithRequired(cur => cur.Course);
}
}
不幸的是,当我想在Db中保存课程时,会出现此错误:
当IDENTITY_INSERT设置为OFF时,无法为表“课程”中的标识列插入显式值
此外,我向课程类的主键添加了属性[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
或[DatabaseGenerated(DatabaseGeneratedOption.None)]
,但它没有任何作用或产生了新的异常!
你有什么主意吗?
答案 0 :(得分:0)
我接受了您的代码,它起作用了:
> public class MyContext : DbContext
> {
> public DbSet<Curriculum> Curriculum { get; set; }
> public DbSet<Course> Course { get; set; }
>
> protected override void OnModelCreating(DbModelBuilder modelBuilder)
> {
> base.OnModelCreating(modelBuilder);
> modelBuilder.Configurations.Add(new CourseConfiguration());
> }
> }
> public class Course
> {
> [DatabaseGenerated(DatabaseGeneratedOption.None)]
> public int Id { get; set; }
> public Curriculum Curriculum { get; set; }
> }
>
> public class CourseConfiguration : EntityTypeConfiguration<Course>
> {
> public CourseConfiguration()
> {
> HasOptional(course => course.Curriculum)
> .WithRequired(cur => cur.Course);
> }
> }
> public class Curriculum
> {
> [ForeignKey("Course")]
> public int Id { get; set; }
>
> public Course Course { get; set; }
> }
但是,在您的情况下,由于该表最初是在标识设置为true的情况下创建的,因此EF不会为您更改它。如果您在第一次迁移时在Course的Id属性上具有以下属性,则不会发生此问题:
[DatabaseGenerated(DatabaseGeneratedOption.None)]
为了解决您的问题,您需要重新创建表Course。 以下链接也可以为您提供帮助: https://stackoverflow.com/a/18917348/2348125