J'essaye de créer une première application de code de cadre d'entité simple. J'ai ces classes:Comment obtenir Entity Framework Code Les propriétés de clé étrangère premières et nullables à travailler?
public class User
{
public int UserId { get; set; }
public string Username { get; set; }
public virtual ActivationTicket ActivationTicket { get; set; }
}
public class ActivationTicket
{
public int ActivationTicketId { get; set; }
public virtual User User { get; set; }
public string Ticket { get; set; }
}
Lorsque je tente de créer un nouvel utilisateur et l'enregistrer dans la base de données (un utilisateur sans ActivationTicket qui est) Je reçois une exception
L'instruction INSERT en conflit avec la contrainte FOREIGN KEY "ActivationTicket_User". Le conflit s'est produit dans la base de données "Test", la table "dbo.ActivatioTickets", la colonne "ActivationTicketId". La déclaration a été résiliée.
Je suppose EF traite la correspondance entre l'utilisateur et ActivationTicket comme 1-1 mais il devrait être 1-0..1
Que dois-je faire pour que cela fonctionne?
Je commence juste avec EF donc je ne sais pas trop où mettre cette règle de mappage. Y a-t-il un endroit recommandé où stocker tous ces mappings? – b3n
Vous avez deux options. 1) Mettez-le directement dans une méthode de votre classe qui dérive de DbContext: void prioritaire protégé OnModelCreating (ModelBuilder modelBuilder) - OU - 2) Définissez les mappages dans des classes séparées en utilisant modelBuilder.Configurations.Add (new ...) – anon
Je recommande fortement de définir des mappages dans des classes séparées (définissez YourModelClass_MappingClass qui dérive de EntityTypeConfiguration, et définissez le mappage dans ctor de cette classe, puis vous devez l'initialiser dans l'événement DbContext OnModelCreating comme @anon a écrit dans son commentaire. utiliser des classes séparées car ce serait un vrai bazar de définir le mapping pour toutes vos classes au même endroit –
Prokurors