解決策が見つからない奇妙な問題が発生しました。Guest テーブルに次のような行があります。
[GuestOnline] [bit] NULL,
そのため、Guest を作成するときに、JSON 形式の ajax 呼び出しを使用してクライアントから値「true」を WCF アプリケーションに渡します。WCF アプリケーションは、このようなプロパティに値を送信します。
[DataMember]
public Nullable<bool> GuestOnline
{
get
{
return this.GuestOnline = true;
}
set
{
this.GuestOnline = true;
}
}
Guest を DB に挿入する C# メソッドは次のようになります。
public Guest CreateGuest(Guest guest)
{
context.Guests.Add(new Guest() {
GuestName = guest.GuestName, GuestOnline = true });
context.SaveChanges();
var result = context.Guests.First<Guest>(g => g.GuestName == guest.GuestName);
return result;
}
これにより、値「true」がSQLの行に明確に送信されます。値はビット値 = 1 に変換する必要がありますが、そうではありません。DB で NULL の値をまだ取得しています。Ajax 呼び出しは次のようになります。
function createguest() {
if (userName.value !== "") {
var guestData = '{"GuestName":"' + userName + '", "GuestOnline":"' + "true" + '"}';
$.ajax({
type: 'POST',
url: 'http://localhost:35709/ChatService.svc/guests',
contentType: 'application/json; charset=utf-8',
data: guestData,
dataType: 'json'
});
}
};
私が間違っていることについて何か提案はありますか?