對於下面的(我使用EF4)我需要在一個線程(ContactThreadId)的未讀鑑於以選中所有郵件登錄IDLINQ - 在相關對象選擇查詢實體框架(EF4)
所以,我基於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);
請幫助。 感謝
編輯:
登錄 - 此表hols登錄/管理員記錄
聯繫 - 該表保存的所有聯繫人(包括登錄項目,因爲登錄還可以參加對話 - 可以回覆消息等)當聯繫表中的登錄ID是NOT NULL,這意味着它是一個登錄用戶,否則它是公共用戶提交消息。
的問題 - >每個登錄只能有1 聯繫記錄(我有一個在登錄創建創建聯繫記錄觸發)。我如何使它成爲1比1。 我已經添加了FK從聯繫到登錄表,但由於某種原因EF創建0..1 - > *關聯。它應該是1到1.對於一個給定的登錄,只能有1個聯繫人與該LoginId。
只要登錄正在查看新的記錄被插入到ContactReadState爲登錄(標記通過登錄閱讀郵件的郵件列表(與使用ContactID爲登錄)。
地獄,你的格式化wa真的很難讀。我希望,我已經讓這條線在邏輯上是正確的。 – Slauma