【发布时间】:2014-05-16 12:19:59
【问题描述】:
我正在使用这个Schema 在带有 SQLServer 2012 数据库的 asp.net MVC 4 应用程序中创建消息系统。
现在我有 2 个问题。当我从线程对话中选择所有消息时,我应该在 MessageReadyState 表中插入一条记录。
这是我通过 ThreadId 获取消息的存储过程
SELECT TOP(@NumberMessage)
Message.MessageId
, Message.CreateDate
, Message.Body,Person.Name , Person.Surname,Utente.ID,MessageThread.MessageThreadId as MessageThreadID
, [User].Username,User.[Path] , Person.Image
, (SELECT MessageReadState.ReadDate
FROM MessageReadState
WHERE MessageReadState.MessageId = Message.MessageId
and MessageReadState.UserId = @UserId) as ReadState
FROM (Message INNER JOIN [Utente] ON Message.SenderUserId = [Utente].ID
INNER JOIN MessageThread ON MessageThread.MessageThreadId = Message.MessageThreadId
INNER JOIN Person ON Person .ID = User.Id_person)
WHERE ([Message].MessageThreadId=@ThreadId)
ORDER BY Message.CreateDate DESC;
END
现在存储过程应该返回选择,但也应该为每一行在 MessageReadState 中插入一行,我该怎么做?
编辑:当然,这应该只在我第一次阅读邮件时完成。我想知道是否有更好的解决方案,就数据库模式而言。 另一个问题..
我怎么知道用户是否有新闻消息? 我的意思是我应该检查在 MessageReadState 中没有一行的线程中的消息?
谢谢
【问题讨论】: