0

解決策が見つからない奇妙な問題が発生しました。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'

        });
    }

};

私が間違っていることについて何か提案はありますか?

4

2 に答える 2

1

LINQ to SQL / LINQ to Entities を使用していて、Guest オブジェクトが既にデータベースにマップされていると仮定して、これを試してください。また、オブジェクトGuestsを含むテーブルまたは構造を表すマッピングによって作成されたエンティティの名前であると仮定しましょう。Guest

public Guest CreateGuest(Guest guest)
{
     guest.GuestOnline = true;
     context.Guests.InsertOnSubmit(guest);
     context.SubmitChanges(); //context.SaveChanges() for LINQ to Entity

     return guest;
}

これは、Guest渡されたオブジェクトを直接使用し、GuestOnline プロパティを true に変更します。次に、オブジェクトのプロパティのレコードを名前付きのテーブル (またはその他のエンティティ構造)Guests に挿入します。挿入時に追加されたレコードまたはその他のプロパティ (自動インクリメントの主キー値など) を変更するトリガーが存在する可能性があるため、返さGuestれるオブジェクトは次のようになります。追加のプロパティ/列の値がすべて含まれています。特定のオブジェクトのエンティティ/テーブルを実際に検索する必要があるのは、それを更新する場合だけです。

于 2013-09-25T14:15:00.013 に答える
0

"true"but true(" " なし)は使用しないでください

于 2013-09-25T12:54:24.890 に答える