Entity Framework: trabajando con FK (¿por qué se ocultan?)
-
07-07-2019 - |
Pregunta
En primer lugar, definamos algunas tablas:
La tabla de usuarios almacenará información sobre un usuario:
Users
- UserID (int, PK)
- ...
UserTasks es una tabla que almacena una tarea asociada con un usuario:
UserTasks
- userID (int, FK to Users table)
- taskName (varchar)
Cuando genero la tabla UserTasks usando ADO Entity Framework, obtendré una clase similar a esta:
Tareas de usuario
- taskName (cadena)
- Usuarios (colección de objetos de usuarios)
Nota: No se genera un ID de usuario en la tabla UserTasks. Así que supongamos ahora que necesito insertar una nueva tarea de usuario ... ¿cómo lo hago? No tengo acceso al campo ID de usuario FK, por lo que mi única opción es hacer una búsqueda y completar un objeto Usuarios, luego pasarlo a mi objeto de tarea, así:
//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;
El problema con lo anterior es que estoy haciendo una llamada de base de datos adicional e innecesaria para completar mi objeto de usuario. ¿Hay alguna forma de crear una nueva asignación a mi campo ID de usuario y aún así mantener el objeto Usuario?
Gracias
--Ryan
Solución
Ahora no, pero tal vez en la próxima versión .