我有以下示例类:
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中的错误?
答案 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对其进行设置。