0

遇到一个奇怪的问题,我找不到解决方案。我的来宾表中有一行,如下所示:

[GuestOnline] [bit] NULL,

因此,当我创建一个来宾时,我使用 json 格式的 ajax 调用将值“true”从客户端传递给 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。但事实并非如此。我仍然在我的数据库中获得 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"但是true(没有“”)

于 2013-09-25T12:54:24.890 回答