在Code中,INSERT语句与FOREIGN KEY约束冲突

我刚开始使用Code第一种方法来创建数据库。 我有以下3个表格:

public partial class AccountHolder { public int AccountHolderId { get; set; } public virtual List
Address { get; set; } } public partial class Nominee { public int NomineeId { get; set; } public virtual List
Address { get; set; } } public partial class Address { public int AddressId { get; set; } public int AccountHolderId { get; set; } public AccountHolder AccountHolder { get; set; } public int NomineeId { get; set; } public Nominee Nominee { get; set; } }

在这里,AccountHolder和Nominee都有1 to *的地址重播。 我用于此的流畅API代码是:

  protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity
().HasRequired(p => p.AccountHolder) .WithMany(p => p.Address) .HasForeignKey(p => p.AccountHolderId) .WillCascadeOnDelete(false); modelBuilder.Entity
().HasRequired(p => p.Nominee) .WithMany(p => p.Address) .HasForeignKey(p => p.NomineeId) .WillCascadeOnDelete(false); }

现在我的问题是每当我试图在AccountHolder或Nominee中插入数据时,我得到了这个例外:

在AccountHolder插入的情况下

{“INSERT语句与FOREIGN KEY约束冲突\”FK_dbo.Addresses_dbo.Nominees_NomineeId \“。冲突发生在database \”CodeFirst.BankContext \“,table \”dbo.Nominees \“,列’NomineeId’。\ r \ n \ n该声明已被终止。“}

在被提名人插入的情况下

{“INSERT语句与FOREIGN KEY约束冲突\”FK_dbo.Addresses_dbo.AccountHolders_AccountHolderId \“。冲突发生在database \”CodeFirst.BankContext \“,table \”dbo.AccountHolders \“,列’AccountHolderId’。\ r \ n \ n该声明已被终止。“}

Cananybody请告诉我如何解决这个问题以及我在这里缺少什么?

您尝试插入Nominee中不存在的地址Nominees_NomineeId。您应该先将Nominee的第一个实例填充值并创建地址并填充值,最后创建AccountHolder的实例,然后保存

在您的表dbo.AccountHolders和dbo.Nominees中,它具有对另一个表的外键引用。 FK的工作方式是它不能在该列中具有值,该值也不在引用表的主键列中。

如果您有SQL Server Management Studio,请将其打开并sp_help’dbo.dbo.Nominees’。 查看FK所在的列以及它引用的表的哪一列。 你正在插入一些不好的数据。对于sp_help’dbo.dbo.AccountHolders’也一样。

希望这可以帮助。