Entity Framework: работа с FK (почему они скрыты?) - PullRequest
0 голосов
/ 11 ноября 2008

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

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

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

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

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

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

UserTasks
- taskName (строка)
- Пользователи (коллекция объектов 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;

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

Спасибо

- Райан

1 Ответ

1 голос
/ 11 ноября 2008
...