有一个奇怪的问题我无法找到解决方案。 我的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'
});
}
};
有关我做错的任何建议吗?
答案 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
(不使用“”)