如何使用实体框架检查数据库条目是否已损坏

时间:2016-11-24 10:07:57

标签: c# entity-framework sqlite

我正在使用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(); }
}

1 个答案:

答案 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);
    }