Существует таблица «многие ко многим» UserFeed
, которая находится между User
и Feed
и обозначает твиттер-подобные отношения следования.
Он имеет только два поля, которые образуют составной ключ: UserID
и FeedID
.
Мне нужно написать метод, который будет подписывать или отписывать пользователя от канала на основе логического флага.
public void SetSubscriptionFlag (int userId, int storeId, bool subscribe)
{
}
Я новичок в Entity Framework, поэтому я пытаюсь найти и следовать "EF-ish" способу сделать это.
Мои первые мысли:
- Вместо того, чтобы работать со средним
UserFeed
классом, я должен создать свойство 1018 * "многие ко многим" ( РЕДАКТИРОВАТЬ: хит ограничения здесь);
- После того, как я это сделаю, мне нужно будет извлечь экземпляр
User
по идентификатору, проверить, дал ли он Feed
в своем Subscriptions
, и добавить / удалить его в зависимости от флага и текущего существования;
- Выясните, как избежать гоночных конфликтов, когда перед проверкой и добавлением / удалением есть временной интервал, и пользователю удается отправить два запроса на добавление или удаление;
- Оптимизируйте мой код, чтобы избежать ненужных SELECT, если таковые возникнут, потому что все, что я действительно хочу сделать, - это один SELECT и один INSERT / DELETE.
Соответствующий фрагмент кода и комментарий к моим пунктам высоко ценится.
Спасибо!