我正在使用sqlite数据库。在这个数据库中,我有一个表,其中包含一个名为CREATED_ON的TEXT类型的字段来存储创建时间戳。 在我的C#代码中,该字段的类型为DATETIME。
如果我试图通过DBSET获取所有条目,通常一切正常
return context.dbset.ToList();
不幸的是,我的代码中存在一个问题,即有时一个损坏的值(字符串不能挂在DATETIME上)存储在CREATED_ON字段中(此时我不知道为什么会发生这种情况)。如果我尝试获取所有条目,我会收到以下错误消息:
“'FileInfos'上的'Created_On'属性无法设置为'System.String'值。您必须将此属性设置为'System.DateTime'类型的非null值。”
我的问题是,是否有可能在获取所有条目时检查CREATED_ON字段是否包含可解析为DATETIME的值?即使是foreach循环也无济于事,因为之前每个条目都试图在给定的类中进行解析。
编辑:
是的,该字段直接映射到DATETIME
builder.Entity<FileInfos>().
Property(i => i.CreatedOn).
HasColumnName("CREATED_ON");
在FileInfos类中:
public DateTime CreatedOn
{
get { return CreatedOnInternal.ToUniversalTime(); }
set { CreatedOnInternal = value.ToUniversalTime(); }
}
答案 0 :(得分:0)
你可以使用DateTime.TryParse(输入, out 变量输出到正确)
示例:
string input = "2000-02-02";
DateTime dateTime;
if (DateTime.TryParse(input, out dateTime))
{
//only print if the parsing was successful
Console.WriteLine(dateTime);
}