以前にもやったことがありますが、今回はうまくいきません。
私がやろうとしているのは、テーブルにある未読メッセージの数を COUNT() することだけです。
テーブル定義:
UserId(int), From(int), Type(nvarchar), Message(nvarchar), Read(bit)
読み取りとUserId
列は、私がチェックしようとしているものです。次のことを試しました:
database.QuerySingle("SELECT COUNT(*) AS NumberOfNotifications FROM Notifications WHERE UserId = @0 AND Read = CONVERT(bit,0)", userid);
他の多くのバージョンも試しましたが、常に同じ結果です。私は常に次のエラーが発生します。
「/」アプリケーションでサーバー エラーが発生しました。
キーワード「Read」付近の構文が正しくありません。説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。
例外の詳細: System.Data.SqlClient.SqlException: キーワード 'Read' 付近の構文が正しくありません。
私がやろうとしているのは、これです: 「GET NUMBER OF UNREAD MESSAGES IN NOTIFICATIONSTABLE WHERE USERID = @0 AND READ = FALSE」
どんな助けでも大歓迎です!
ありがとうございました
更新しました
以下は、問題が発生しているヘルパーの完全なコードです。エラーが修正されたので、サインイン時に「新しい通知メッセージがあります」が表示されない理由がわかりません - 対応するテーブルに 4 行あります。
@helper RetrievePhotoWithName(int userid)
{
var database = Database.Open("DUDE");
var name = database.QuerySingle("select FirstName, LastName, ProfilePicture from UserProfile where UserId = @0", userid);
var notifications = database.QuerySingle("SELECT COUNT(*) AS NumberOfNotifications FROM Notifications WHERE UserId = @0 AND [Read] = @1", userid, false);
var DisplayName = "";
if(notifications["NumberOfNotifications"] < 1)
{
DisplayName = name["FirstName"] + " " + name["LastName"];
}
else
{
DisplayName = name["FirstName"] + ", you have " + notifications["NumberOfNotifications"] + " new messages.";
}
<a href="@Href("~/Home")" title="My Account"><img src="@Href("~/Shared/Assets/Images/" + name["ProfilePicture"] + ".png")" id="MiniProfilePicture" /> @DisplayName</a>
database.Close();
}