EF错误顺序保存实例

时间:2019-07-03 22:00:56

标签: c# entity-framework entity-framework-6

我有以下示例类:

int arr[5] = {1,2,3,0,0};

当我添加A和B的新实例时,如下所示:

public class A {
    public Guid Id { get; set; }
    public B B { get; set; }
}

public class B {
    public Guid Id { get; set; }
    public string SomeProperty { get; set; }
}

public class AConfiguration : EntityTypeConfiguration<A> {
    public AConfigurations() {
         HasOptional(x=> x.B)
             .WithRequired();
    }
}

牢记该模型,迁移为具有指导PK的A创建一个表,为B创建一个表。B将其PK标记为FK到A,这对我的需求是正确的。

问题是:当它遇到SaveChanges时,EF尝试在插入A之前先插入B,这会在数据库上创建FK异常。

我是否缺少某些东西,或者这是EF 6中的错误?

1 个答案:

答案 0 :(得分:0)

如果首先使用EF代码(至少要使用Fluent api),则可以首先将以下所示的属性添加到主键:

[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }

您在此处使用对象初始化程序,但没有将Id设置为特定的Guid值。例如,它们可能会发送到Guid.Empty值到数据库中。

在EF中支持保存用于将其添加到数据库中的方案的对象图,您可以研究此示例。请注意,此处的id是整数,而不是Guid。

Code Sample EF Saving related data

因此,首先我将尝试向您的id添加DatabaseGenerated选项,也可以使用Fluent API对其进行设置。