2013-08-06 2 views
1

У меня есть 2 объекта Группа и пользователь. 1 «Группа» имеет коллекцию пользователей, а 1 «Пользователь» имеет набор групп. Я хочу, чтобы удалить запись в таблицеEF удалить ссылку в таблице моста

Group: GroupID, name 
User: UserID, name 
GroupUser (bridge table): GroupID, UserID 

моста в настоящее время у меня есть

var query = from u in context.User 
         from g in u.Group 
         where u.UserID==1 && g.GroupID==10 

Но как я могу удалить запись в таблице моста с согласующей UserID и GroupID. query.Clear() возвращает ошибку

Редактировать: в моем EF нет объекта для представления таблицы моста. поэтому я не могу использовать user context.UserGroup (...), должен ли я создать объект для таблицы моста? Или есть ли другой способ решить эту проблему?

+0

Что столовое мост? –

+0

таблица отношений многих-ко-многим – kaboom

+0

Какая ошибка вы получаете точно? –

ответ

1

Предполагая, что ваш стол мост назван UserGroup(s)

var group = context.UserGroup.SingleOrDefault(x => x.UserID == 1 && x.GroupID == 10); 
if (group != null) 
{ 
    context.DeleteObject(group); 
    context.SaveChanges(); 
} 
else 
    //Do something in response 
+0

Почему 'First' вместо' Single' (или 'SingleOrDefault'), если составной ключ' UserId' + 'GroupId', любая комбинация будет уникальной? Просто интересно .. –

+0

Я согласен и изменил свой ответ. «SingleOrDefault» будет более подходящим для таблицы мостов. Благодарю. – Khan

+0

Спасибо. в моем EF нет объекта для представления таблицы моста. поэтому я не могу использовать user context.UserGroup (...). Есть ли другой путь? – kaboom

0

Вы должны выбрать из таблицы моста:

var results = from bt in context.BridgeTable 
       where bt.UserID = 1 and bt.GroupID = 1 
foreach(var result in results) 
{ 
    context.DeleteObject(result); 
} 
context.SaveChanges(); 
+0

Обратите внимание, что если 'results' имеет 0 элементов,' context.SaveChanges() 'вызывается без каких-либо изменений; есть ли какое-либо влияние на это? –

Смежные вопросы