2008-10-08 7 views
1

J'ai une classe User qui peut avoir ou non un département associé. Cela est référencé par la clé étrangère DepartmentId et le champ approprié dans la table User est défini pour autoriser les valeurs NULL.Relation zéro à plusieurs avec Linq to SQL

Quand je créé mon « Créer un utilisateur » formulaire et sélectionnez pas Département, je reçois une erreur de conflit sur SubmitChanges():

The INSERT statement conflicted with the FOREIGN KEY constraint "FK_User_Department". 

Comment puis-je convaincre LINQ to SQL pour insérer une valeur NULL lorsque la " Département "a été sélectionné comme première option" vide "?

Ou, peut-être, y a-t-il un mot-clé qui me manque pour le paramètre "optionLabel" de la méthode Html.DropDownList qui fait cela? J'utilise actuellement "None" car l'utilisation de null ou "" ne provoque pas l'affichage d'une "option vide", et je pense que cela peut contribuer au problème. Merci pour toute aide.

Répondre

1

J'ai trouvé une solution moins que souhaitable en mettant ce qui suit dans ma méthode UsersController.Create:

// Snipped UpdateModel call 
if (form["User.DepartmentId"].Length == 0) 
{ 
    createdUser.DepartmentId = null; 
} 
Models.User.DataContext.SubmitChanges(); 

Bien sûr, je préférerais quelque chose qui est plus propre/automatique.

0

Vous pourriez avoir une entrée "N/A" dans le département que vous affectez quand aucun département n'est sélectionné. Alors vous n'obtiendrez pas un conflit de clé étrangère.