2008-11-11 5 views
0

Прежде всего, давайте определим несколько таблиц:Entity Framework: Работа с FK-х (почему они получают скрытые?)

стол

Пользователи будут хранить информацию о пользователе:

Users 
- UserID (int, PK) 
- ... 

UserTasks является таблица, которая хранит задачу, связанную с пользователем:

UserTasks 
- userID (int, FK to Users table) 
- taskName (varchar) 

Когда я генерировать таблицу UserTasks с помощью ADO Entity Framework, я получить класс, который выглядит следующим образом:

UserTasks
- TASKNAME (строка)
- Пользователи (коллекция объектов пользователей)

Примечание: Там нет идентификатора пользователя, который генерируется в таблице UserTasks. Итак, давайте предположим, что мне нужно вставить новую пользовательскую задачу ... как мне это сделать? У меня нет доступа к полю FK идентификатор пользователя, так что мой единственный вариант, чтобы сделать поиск и заполнить пользователей объект, а затем передать, что мой объект задачи, например:

//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; 

Проблема с вышеизложенным заключается в том, что я делаю дополнительный и ненужный запрос базы данных для заполнения моего пользовательского объекта. Нужно ли каким-либо образом создать новое сопоставление в поле userID и сохранить объект User?

Благодаря

--Ryan

ответ