SignalR チャット アプリケーションでスパムを検出する方法を探しています。ユーザーがメッセージを送信するたびに、そのユーザーが過去 5 秒間に送信したメッセージの量を確認したいと考えています。Message と User の 2 つのテーブルを持つデータベースがあります。メッセージは MessageDate でログに記録され、ユーザーは UserID でログに記録されます。テーブル間には多対 1 の関係があります (メッセージごとに 1 人のユーザー、ユーザーごとに複数のメッセージ)。
過去 5 秒間に特定のユーザーが送信したメッセージを確認するクエリを作成するにはどうすればよいですか?
オンラインで解決策を探してみましたが、クエリは初めてで、すべてを正しく行うのは困難です (結合、日付の範囲、count プロパティの使用、データ モデルの取得)。
私が得た最も近いものは次のようなものです:
var db = new MessageContext();
int messageCount = (from op in db.Message
join pg in db.User on op.UserID equals pg.UserID
where pg.UserID == op.UserID
&& (a.Start.Date >= DateTime.Now.AddSeconds(-5)
&& a.Start.Date <= DateTime.Now)
select op)
.Count();
事前に感謝します。