簡體   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