繁体   English   中英

无法返回null(System.Boolean不能为null)

[英]Can't return null (System.Boolean cannot be null)

我想使用WCF服务从数据库将int和bool值返回到WP页。 当数据库中的那些字段为null我得到一个例外:

格式化程序尝试反序列化消息时引发异常:尝试反序列化参数http://tempuri.org/:someFuncResult时发生错误。 InnerException消息为'ValueType'System.Boolean'不能为null。 有关更多详细信息,请参见InnerException。

与int类型,我有同样的问题。

我的数据库片段如下所示:

[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>字段是最近引入的,因此我的服务在客户端的引用未更新。 更新参考后,它开始工作。

数据库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;
            }

        }

bool Isnull = ConvertToBool(_sqldatareader["Name"]);

这项工作在mysql中很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM