Dans Code d’abord, l’instruction INSERT était en conflit avec la contrainte FOREIGN KEY.

Je viens juste de commencer à utiliser la première approche de Code pour créer des bases de données. J’ai 3 tables suivantes:

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; } }

Ici, le AccountHolder et le Nominee ont 1 to * numéro de réplique de 1 to * avec l’adresse. Le code API couramment utilisé pour cela est:

  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); }

Maintenant, mon problème est que chaque fois que j’essaye d’insérer des données dans AccountHolder ou Nominee, j’ai cette exception:

En cas d’insertion de AccountHolder

{“L’instruction INSERT était en conflit avec la contrainte FOREIGN KEY \” FK_dbo.Addresses_dbo.Nominees_NomineeId \ “. Le conflit s’est produit dans la firebase database \” CodeFirst.BankContext \ “, table \” dbo.Nominees \ “, colonne ‘NomineeId’. \ R \ nLa déclaration a été terminée. “}

En cas d’insertion du candidat

{“L’instruction INSERT était en conflit avec la contrainte FOREIGN KEY \” FK_dbo.Addresses_dbo.AccountHolders_AccountHolderId \ “. Le conflit est survenu dans la firebase database \” CodeFirst.BankContext \ “, table \” dbo.AccountHolders \ “, colonne ‘AccountHolderId’. \ R \ nLa déclaration a été terminée. “}

Quelqu’un peut-il me dire comment résoudre ce problème et ce qui me manque ici?

Vous essayez d’insérer l’adresse Nominees_NomineeId qui n’existe pas dans Nominee.Vous devez d’abord créer une instance de Nominee, puis remplir Adresse, puis créer une valeur et créer la dernière instance de AccountHolder.

Dans votre table dbo.AccountHolders et dbo.Nominees, il comporte une référence de clé étrangère à une autre table. Le fonctionnement d’un FK est qu’il ne peut pas avoir de valeur dans cette colonne qui ne figure pas également dans la colonne de clé primaire de la table référencée.

Si vous avez SQL Server Management Studio, ouvrez-le et sp_help ‘dbo.dbo.Nominees’. Voir quelle colonne se trouve sur FK et quelle colonne de quelle table il fait référence. Vous insérez des données erronées. Faites de même pour sp_help ‘dbo.dbo.AccountHolders’.

J’espère que cela t’aides.