Entity Framework: работа с FK (почему они скрываются?)

Прежде всего, давайте определим несколько таблиц:

В таблице Users будет храниться информация о пользователе:

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

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

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

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

UserTasks
- taskName (строка)
- Users (коллекция объектов Users)

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

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

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

Спасибо

- Райан


person bugfixr    schedule 11.11.2008    source источник


Ответы (1)


Не сейчас, но возможно, в следующей версии.

person Craig Stuntz    schedule 11.11.2008