我使用此代码从我的数据库中获取数据
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 column
有null
数据时,我遇到了问题:
[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;
}
}
如何解决此错误?
答案 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;
}