Для следующего (я использую EF4) мне нужно выбрать все сообщения в теме ( ContactThreadId ), которые еще не были прочитаны, учитывая LoginId
Итак, я основан на ContactThreadId и LoginId. Мне нужно знать, прочитал ли этот LoginId все сообщения в теме. Если нет, мне нужно обновить ContactReadState со всеми сообщениями из цепочки с его / ее LoginId и когда она / он прочитает его.
Я пробовал это, но застрял:
// Update read state
var thread = this.contactMessageThreadRepository.GetRow(id);
var loginEntity = this.loginRepository.GetRow(ProfileContext.LoginId);
var unreadMsg = loginEntity.Contact
.Where(x => x.ContactThread.Any(y => y.ContactThreadId == id))
.Select(b => b.ContactMessage.FirstOrDefault())
.Where(q => q.ContactReadState.Count() == 0);
var unreadMsg = loginEntity.Contact
.Where(x => x.ContactThread.Any(y => y.ContactThreadId == id))
.Where(y => y.ContactReadState.Any(q => q.ContactId != loginEntity.ContactId));
var msg = thread.Contact
.Where(x => x.LoginId == loginEntity.LoginId)
.Where(y => y.ContactReadState.Count() == 0);
пожалуйста, помогите.
спасибо
РЕДАКТИРОВАТЬ :
Логин - эта таблица содержит логины / записи администратора
Контакт - в этой таблице хранятся все контакты (включая Вход элементов, поскольку логины могут также участвовать в беседе, могут отвечать на сообщения и т. Д.) Когда LoginId в таблице контактов НЕ НУЛЬ , это означает, что это Логин пользователь, в противном случае это публичный пользователь , отправляющий сообщение.
ВОПРОС -> Каждый Логин может иметь только 1 Контакт запись (У меня есть триггер, который создает Контакт запись при Логин создание). Как мне сделать так, чтобы было 1 к 1. ??
Я добавил FK из таблицы Contact в Login , но по какой-то причине EF создал ассоциацию 0..1 -> *. И это должно быть от 1 до 1. Для данного логина может быть только 1 контакт с этим логином.
Всякий раз, когда при входе в систему просматривается список сообщений, в ContactReadState для этого входа в систему добавляется новая запись (отмечается сообщение, прочитанное этим именем входа (с ContactId для этого имени входа).