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

¿Fue útil?

Solución

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top