Comment obtenir Entity Framework Code Les propriétés de clé étrangère premières et nullables à travailler?
Je suis en train de créer un simple entity framework code first application. J'ai ces classes:
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 j'essaie de créer un nouvel utilisateur et de l'enregistrer dans la base de données (un utilisateur sans ActivationTicket) j'recevoir une exception
L'instruction INSERT en conflit avec la contrainte de CLÉ ÉTRANGÈRE "ActivationTicket_User". Le conflit est survenu dans la base de données "Test", la table "dbo.ActivatioTickets", la colonne "ActivationTicketId'. La déclaration a été résilié.
Je suppose EF traite la correspondance entre l'Utilisateur et ActivationTicket que 1-1, mais il convient de 1-0..1
Que dois-je faire pour obtenir que cela fonctionne?
source d'informationauteur b3n
Vous devez vous connecter pour publier un commentaire.
Vous aurez besoin d'une règle de mappage comme ceci:
Cela vous donnera une ActivationTickets table avec un nom d'utilisateur qui est nullable.
@b3n
Il devrait être suffisant pour ce faire, au moins avec VS 2013:
C'est la partie importante:
Cela permettra de spécifier le foreignkey dans votre table "User" pour le ActivasionTicket et définissons que c'est facultatif.
les crédits vont à:
http://forums.asp.net/t/1948351.aspx?Change+Étrangers+Touche+pour+nullable+à l'aide de+Code+#Premiers 5554732
J'ai eu le même problème et instantanément a fonctionné pour moi.
Également comme une note que j'ai marqué toutes mes clés primaires avec l'annotation de données "[Clé]". Cela peut être nécessaire pour faire ce travail.