J'ai une contrainte de clé étrangère entre les tables Sessions et les utilisateurs. Plus précisément, Sessions.UID = Users.ID. Parfois, je veux que Sessions.UID soit nul. Cela peut-il être autorisé? Chaque fois que j'essaie de faire cela, je reçois une violation de contrainte FK.SQL Server 2005: contrainte de clé étrangère Nullable
Spécifiquement, j'insère une ligne dans Sessions via LINQ. Je définis le Session.User = null; et je reçois cette erreur:
An attempt was made to remove a relationship between a User and a Session. However, one of the relationship's foreign keys (Session.UID) cannot be set to null.
Cependant, lorsque je retire la ligne qui NULLS la propriété de l'utilisateur, je reçois cette erreur sur ma ligne SubmitChanges:
Value cannot be null. Parameter name: cons
Aucun de mes tableaux ont un champ appelé « contre ', et ce n'est pas non plus dans mon fichier DataContext.designer.cs à 5 500 lignes, et ce n'est pas non plus dans le QuickWatch pour aucun des objets liés, donc je n'ai aucune idée de ce que' cons 'est.
Dans la base de données, Session.UID est un champ int nullable et User.ID est un int non nul. Je veux enregistrer des sessions qui peuvent ou non avoir un UID, et je préfère le faire sans désactiver la contrainte sur cette relation FK. Y a-t-il un moyen de faire cela?
Droit adk. +1 La définition d'une clé étrangère est la suivante: il s'agit d'une valeur dans une table qui doit correspondre à une valeur de clé primaire dans une autre table ou être nulle. – Alan
Logiquement, c'est logique, non? Je l'ai lu comme ceci: SI j'essaie de référencer un enregistrement dans une autre table, assurez-vous que la référence est valide. Si je ne le fais pas (NULL), on s'en fout. –