2016-11-24 47 views
0

我正在使用sqlite数据库。在这个数据库中,我有一个表,其中包含一个名为CREATED_ON的字段类型为TEXT的字段,用于存储创建时间戳。 在我的C#代码中,该字段的类型是DATETIME。如何使用实体框架检查数据库条目是否已损坏

如果我试图让通过DBSET所有条目通常一切正常

return context.dbset.ToList(); 

不幸的是,在我的代码有问题,有时一个错误值(字符串不parasable到DATETIME)存储在CREATED_ON字段(目前我不知道为什么会发生这种情况)。如果我试图让我获得以下错误信息所有条目:

“的‘Created_On’属性的‘FileInfos’不能设置为‘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

异常表明您将数据库列直接映射到日期时间属性。我们能否看到涉及的类和映射的相关部分? –

+1

那么,这是EF无法处理的。你必须将字符串映射到字符串。在实体内部,您可以尝试将字符串值解析为未映射的DateTime属性。 –

回答

0

您可以使用DateTime.TryParse(输入,变量如果输出正确)

示例:

string input = "2000-02-02"; 
    DateTime dateTime; 
    if (DateTime.TryParse(input, out dateTime)) 
    { 
     //only print if the parsing was successful 
     Console.WriteLine(dateTime); 
    } 
相关问题