Добавление отношений без запроса базы данных - PullRequest
1 голос
/ 10 ноября 2011

Я знаю, что видел это, но нигде не могу его найти.

У меня есть пара объектов с отношениями "многие ко многим": человек и отдел. У человека может быть много отделов и наоборот.

Я думал, что это было:

var person = //query user

var d = new Department();
d.Id = 123;

person.Departments.add(d);

Это создает новый отдел в базе данных и связывает их, но это не то, что я хочу. Отдел уже существует. Я просто хочу создать отношения. Как я могу сделать это, не запрашивая базу данных, чтобы получить экземпляр отдела?

Ответы [ 2 ]

1 голос
/ 10 ноября 2011

Попробуйте это:

var department = dbContext.Departments.FirstOrDefault(d => d.Id == 123);
person.Departments.Add(department);
dbContext.SaveChanges();

Это не должно запрашивать базу данных, пока не будет вызван dbContext.SaveChanges(), поскольку используются отложенные запросы.Однако, если это не сработает, вы можете вместо этого попробовать обновить сущность сопоставления:

var departmentMember = new DepartmentMember
                           {
                               DepartmentId = 123,
                               MemberId = person.Id
                           };

dbContext.DepartmentMembers.Add(departmentMember);
dbContext.SaveChanges();
0 голосов
/ 10 ноября 2011

Как насчет:

person.Departments.Add(context.Departments.First(c=>c.Id==123));
...