在比较日期时间时,我有一个奇怪的例外。
示例代码:
_dbContext.Details.Where(x => x.Person.Birth.Year == date.Year);
出生日期和日期都不可为空日期。
异常消息:
Message: System.ArgumentException : Property 'Int32 Year' is not defined for type 'System.Nullable`1[System.DateTime]'
我尝试在内存中设置数据库的单元测试中运行代码。
答案 0 :(得分:0)
我的模型定义错误,我没有正确指定外键。
看起来与此类似(从PerId
重命名为PersonId
后,问题就消失了):
public class Person
{
public int Id {get; set;}
public DateTime Birth {get; set;}
}
public class Details
{
public int Id {get; set;}
public int PerId {get; set;}
public Person Person {get; set;}
}
答案 1 :(得分:0)
如果它可以为空,则需要访问:
date.Value.Year
答案 2 :(得分:0)
所以,似乎你有" DateTime?"而不是" DateTime"。这样,你必须检查类似的东西:
_dbContext.Details.Where(x => date.HasValue && (x.Person.Birth.Year == date.Value.Year));