C# 无法返回null(System.Boolean不能为null)
我想使用WCF服务从数据库向WP页返回int和bool值。当数据库中的这些字段为空时,我得到一个异常: 格式化程序在尝试反序列化 消息:尝试反序列化参数时出错 . InnerException消息被删除 “ValueType”System.Boolean“不能为空。请参见内部异常 更多细节 对于int类型,我也有同样的问题 我的数据库的一部分如下所示:C# 无法返回null(System.Boolean不能为null),c#,wcf,visual-studio,linq-to-sql,C#,Wcf,Visual Studio,Linq To Sql,我想使用WCF服务从数据库向WP页返回int和bool值。当数据库中的这些字段为空时,我得到一个异常: 格式化程序在尝试反序列化 消息:尝试反序列化参数时出错 . InnerException消息被删除 “ValueType”System.Boolean“不能为空。请参见内部异常 更多细节 对于int类型,我也有同样的问题 我的数据库的一部分如下所示: [boolValue] BIT NULL, [intValue] INT NULL, 我的服务实施: pu
[boolValue] BIT NULL,
[intValue] INT NULL,
我的服务实施:
public someClass someFunc(int check)
{
return (from a in datacontext.someTable
where a.number == check
select new someClass ()
{
intValue2 = (int?)a.intValue ,
boolValue2 = (bool?)a.boolValue,
}).Single();
}
我的服务界面:
[OperationContract]
someClass someFunc(int check);
[DataContract]
public class someClass
{
[DataMember]
public int? intValue2 { get; set; }
[DataMember]
public bool? boolValue2 { get; set; }
}
由于最近引入了Nullable字段,所以客户端对我的服务的引用并没有更新。更新引用后,它工作。数据库null与标准null不同 使用此功能
static bool ConvertToBool(object Dnull)
{
try
{
DBNull a = (DBNull)Dnull;
string u = a.ToString();
if (u.Length > 0)
{
return false;
}
else
{
return true;
}
}
catch (InvalidCastException e)
{
return false;
}
}
及
这在mysql中可以很好地工作。如果您最近引入了Nullable字段,您可能需要更新服务客户端的引用。代理似乎仍然期望bool而不是bool?您是否绑定到WS-SOAP服务?SOAP并不总是很好地处理空值。@Habib,我的服务实现代码中有一个错误,它没有更新。谢谢,现在成功了!这只是DBNull不能直接转换的想法,我急需它
bool Isnull = ConvertToBool(_sqldatareader["Name"]);