Добавление нескольких элементов в коллекцию EntityCollection с использованием LINQ - PullRequest
0 голосов
/ 28 февраля 2012

Я пытаюсь установить свойство EntityCollection (v.TPM_USER2) для подмножества пользователей в моей базе данных.У меня есть массив view.DNs, который содержит список имен пользователей для добавления.Я могу сделать это с помощью:

if(view.DNs != null && view.DNs.Length > 0)
{
   var users = (from u in context.TPM_USER where view.DNs.Contains(u.DN) select u);
   foreach (var u in users)
   {
      v.TPM_USER2.Add(u);
   }
}

Это прекрасно работает, однако у меня есть ощущение, что есть способ сделать это с помощью одной строки кода.Я пробовал:

v.TPM_USER2 = (from u in context.TPM_USER where view.DNs.Contains(u.DN) select u);

, что приводит к ошибке:

Ошибка 78 Не удается неявно преобразовать тип 'System.Linq.IQueryable' в 'System.Data.Objects.DataClasses.EntityCollection

Я тоже безуспешно пытался использовать ToArray().Есть ли способ сделать это?

ОБНОВЛЕНИЕ:

Я также попытался:

v.TPM_USER2.Attach(from u in context.TPM_USER where view.DNs.Contains(u.DN) select u);

, который компилируется, но генерирует ошибку времени выполнения:

Присоединение не является допустимой операцией, когда исходный объект, связанный с этим связанным концом, находится в добавленном, удаленном или отсоединенном состоянии.Объекты, загруженные с использованием опции слияния NoTracking, всегда отсоединяются.

1 Ответ

1 голос
/ 28 февраля 2012

v.TPM_User2.AddRange(users);

Редактировать : Это было для EntitySet - похоже, вы застряли с foreach. В качестве альтернативы, вы можете написать свой собственный метод расширения AddRange, чтобы сделать цикл для вас, если вы посвятили себя тому, чтобы сделать это одной строкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...