無法將 DBNull.Value 強制轉換為類型“System.DateTime”。請使用可空類型


取數據庫中的數據時,數據庫中的字段有可能是空值,雖然Linq中的Field方法和SetField方法都可以處理可以為 null 的類型,不必像前面的示例那樣檢查 Null 值,我們再用Field將一些可空的值賦給實體的屬性時,有可能會報錯,因為實體的屬性是可空類型,例如:

角色(SmRole)實體有如下可空類型的創建時間的屬性

public virtual DateTime? Createdtime
{
   get { return _createdtime; }
   set { _bIsChanged |= (_createdtime != value); _createdtime = value; }   
}

 

//dsRole為數據集

var roleAllDs =
     from role in dsRole.Tables[0].AsEnumerable()
     select role;

 

//創建SmRole實體對象

SmRole smrole = new SmRole();

//遍歷數據

foreach (var  r in roleAllDs)//dsRole.Tables[0].Rows
{

  //...

  //smrole.Createdtime = r.Field<DateTime>("CREATEDTIME");

  //如上這樣取值就會報標題所示的異常,應該改為可空類型,正確的如下

  smrole.Createdtime = r.Field<DateTime?>("CREATEDTIME");//加上可空標識

  //...

}

https://www.cnblogs.com/vihone/archive/2010/06/04/1751424.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM