该数据库具有两个表Coach和CoachType(请参见下文)。可以先使用代码(添加-迁移,然后更新数据库)来创建这两个表。
public class Coach
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
[ForeignKey("FK_CoachType_Id")]
public int CoachTypeId { get; set; }
public virtual CoachType coachtype { get; set; }
}
public class CoachType
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id{ get; set; }
public string Name { get; set; }
}
但是当我尝试使用一些默认数据来播种数据时,它会显示错误消息:
The INSERT statement conflicted with the FOREIGN KEY constraint "FK_coaches_coachtypes_CoachTypeId". The conflict occurred in database "MyDatabase", table "dbo.CoachType", column 'Id'.
The statement has been terminated.
这是我的代码,其中包含用于填充表格的数据:
modelBuilder.Entity<CoachType>().HasData(new CoachType
{
CoachTypeId = 1,
Name = "Name"
});
modelBuilder.Entity<Coach>().HasData(new Coach
{
Id = 1,
Name = "Name",
CoachTypeId = 1
});`enter code here`
我查看了Google并尝试了一些方法,但我不断收到该消息。
答案 0 :(得分:0)
Id
表的CoachType
列是自动生成的,因此无论您分配给其Id
的值是什么,它都会被忽略,因此,在插入CoachType
时,插入的记录Id
不会是1
的机会。因此,当尝试插入Coach
等于CoachTypeId
的{{1}}时,会引发外键冲突错误。
一种可能的解决方案是使1
的{{1}}列不相同。
另外,我不知道您为什么写Id
而不是CoachType
。