GetData包括有时是Null

时间:2013-07-16 14:58:33

标签: c#

我使用此代码从我的数据库中获取数据

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;
}

}

如何解决此错误?

3 个答案:

答案 0 :(得分:1)

看来你的数据库专栏&实体模型不同步。如果从数据库中获得null值,则该字段必须可为空。为了映射到您的模型,它还必须支持可为空的日期。

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

答案 1 :(得分:0)

您可以尝试在从数据库中读取值时提供默认值,以确保您不存储任何空值:

DateColumn = s.DateColumn ?? DateTime.MinValue

答案 2 :(得分: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;
            }