我在我的项目中使用Entity Framework Core(版本1.1.1.0),它正在连接到SQLite数据库。我有一个包含日期和时间值的数据库表,在SQLite中表示为text
数据类型,在我的EF对象中,它是DateTime
。
这个值不应该为null,但我有生产用户显然对此属性具有空值。因此,每当我的应用程序使用FirstOrDefault
查询此表时,它都会抛出一个InvalidFormatException
,表示"该字符串不是有效的DateTime。"
我希望能够获得我的结果,如果日期值为null,我想将其设置为值并更新SQLite数据库中的该行。
如何在EF Core中检索行而不抛出InvalidFormatException
?我尝试DateTime
和DateTime?
同时将Nullable<DateTime>
设置为可空,但这两种方法似乎都不起作用。
这是针对.NET 4.6运行的WPF应用程序,如果这有任何区别
我的对象:
public class MyObject
{
public int ID { get; set; }
public string error { get; set; }
public string error_description { get; set; }
public string access_token { get; set; }
public int expires_in { get; set; }
public string refresh_token { get; set; }
public string token_type { get; set; }
public DateTime expirationDate { get; set; } // the offending property
}
答案 0 :(得分:0)
如果使用DateTime?
无法正常工作,我认为NULL
不是您的问题。必须有一些既不是NULL
也不是DateTime
字符串的值。
您可以尝试将列映射到string
以查找有问题的值。
var badObjects =
dbContext.MyObjects.Where(
o =>
{
DateTime value;
return !DateTime.TryParse(o.expirationDate, out value);
});