bool通过公共Nullable <bool> </bool>从实体到Sql的位1的真值

时间:2013-09-25 12:52:18

标签: c# sql ajax wcf entity

有一个奇怪的问题我无法找到解决方案。 我的Guest表中有一行 看起来像这样:

[GuestOnline] [bit] NULL,

因此,当我创建一个Guest时,我将客户端的值“true”与json格式的ajax调用一起传递给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'

        });
    }

};

有关我做错的任何建议吗?

2 个答案:

答案 0 :(得分: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对象将包含所有其他属性/列值。您需要实际搜索实体/表以查找特定对象的唯一情况是您要更新它。

答案 1 :(得分:0)

请勿使用"true"true(不使用“”)