Прежде всего, давайте определим несколько таблиц: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