Can't return null (布尔值不能为空)
本文关键字:不能 布尔值 null return Can | 更新日期: 2023-09-27 18:16:53
我想使用WCF服务从数据库返回int和bool值到WP页面。当数据库中的这些字段是null
时,我得到一个异常:
对于int类型,我有同样的问题。格式化程序在试图反序列化时抛出异常消息:在尝试反序列化参数时出现错误http://tempuri.org/: someFuncResult。InnerException消息是"ValueType"系统。布尔值不能为空。请参阅InnerException查看详细信息。
我的数据库的一部分看起来像:
[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<bool>
字段是最近引入的,所以我的服务的客户端引用没有更新。
数据库空值与标准空值不同
使用这个函数
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;
}
}
和
bool Isnull = ConvertToBool(_sqldatareader["Name"]);