Tout d'abord, nous allons définir quelques tables:Entity Framework: Travailler avec FK de (pourquoi ils sont cachés?)
table des utilisateurs stockent des informations sur un utilisateur:
Users
- UserID (int, PK)
- ...
UserTasks est un table qui stocke une tâche associée à un utilisateur:
UserTasks
- userID (int, FK to Users table)
- taskName (varchar)
Quand je produis la table UserTasks en utilisant Entity Framework ADO, je vais obtenir une classe qui ressemble à ceci:
UserTasks
- taskName (string)
- Utilisateurs (collection d'objets utilisateurs)
Note: il n'y a pas userID qui est généré dans la table UserTasks. Alors supposons maintenant que j'ai besoin d'insérer une nouvelle tâche utilisateur ... comment puis-je le faire? Je n'ai pas accès au champ userID FK, donc ma seule option est de faire une recherche et remplir un utilisateur objet, puis passer que mon objet de tâches, comme ceci:
//get the user we are interested in
var user = (from u in context.Users
where u.userID == 2
select u).FirstOrDefault();
//create the new task
UserTasks newTask = new UserTasks();
newTask.taskName = "New Task";
newTask.User = user;
Le problème avec ce qui précède est que je fais un appel de base de données supplémentaire et inutile pour remplir mon objet utilisateur. Y at-il de toute façon créer un nouveau mappage à mon champ userID et toujours garder l'objet utilisateur?
Merci
--Ryan