2013-07-16 45 views
0

我得到的數據從我的數據庫使用此代碼的GetData包括有時爲空

var table = kantarDataSetTartimlarTableAdapter.GetData().Select(s => new 
        { 
         s.DateColumn, 
         s.Index 
        }).AsEnumerable().Select ((s, column) => new 
              {             
               s.DateColumn,             
               s.Index             
               column_no = column + 1 
              }); 

如果date column不是null我沒有任何問題。但是,當date columnnull數據我有一個問題:

[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 
public System.DateTime event_start_date { 
get { 
    try { 
     return ((global::System.DateTime)(this[this.tableDataTable1.event_start_dateColumn])); 
    } 
    catch (global::System.InvalidCastException e) { 
     throw new global::System.Data.StrongTypingException("The value for column \'event_start_date\' in table \'DataTable1\' is DBNull.", e); 
    } 
} 
set { 
    this[this.tableDataTable1.event_start_dateColumn] = value; 
} 

}

我怎樣才能解決這個問題?

回答

1

看起來你的數據庫列&實體模型不同步。如果您從數據庫中獲得null值,那麼該字段必須爲可爲空。爲了映射到您的模型,它還必須支持可空日期。

您需要更新您的型號中的event_start_date才能使用Nullable<DateTime>/DateTime?

0

閱讀從你的數據庫中的值時,以確保不會存儲任何空,你可以嘗試提供一個默認值:

DateColumn = s.DateColumn ?? DateTime.MinValue 
0

我更新event_start_date,我解決我的問題

get { 
       try { 
        if (this[this.table.DateTimeColumn] is DBNull) 
        { 
         return Convert.ToDateTime(null); 
        } 
        else 
        { 
         return ((global::System.DateTime)(this[this.table.DateTimeColumn])); 
        } 
       } 
       catch (global::System.InvalidCastException e) { 
        throw new global::System.Data.StrongTypingException("Description", e);       
       } 
      } 

      set { 
       this[this.table.DateTimeColumn] = value; 
      }