我正在使用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(); }
}
异常表明您将数据库列直接映射到日期时间属性。我们能否看到涉及的类和映射的相关部分? –
那么,这是EF无法处理的。你必须将字符串映射到字符串。在实体内部,您可以尝试将字符串值解析为未映射的DateTime属性。 –