我有以下代码导致实体框架的无参数构造函数错误。我已经发现它是由if(search.Active)块和那里的日期引起的...但我不知道如何绕过它。我如何构建我的日期以便EF与他们合作?感谢。
var members = from m in Members select m;
if (!string.IsNullOrEmpty(search.Letter))
members = members.Where(x => x.LastName.Substring(0, 1) == search.Letter.Substring(0, 1));
if (search.Active)
{
if (DateTime.Now < new DateTime(DateTime.Now.Year, 10, 15))
{
members = members.Where(x => x.ExpireDate >= new DateTime(DateTime.Now.Year, 5, 31));
}
else
{
members = members.Where(x => x.ExpireDate >= new DateTime(DateTime.Now.Year + 1, 5, 31));
}
}
return members.Select(x => new MemberListItem
{
FirstName = x.FirstName,
LastName = x.LastName,
MemberId = x.MemberId,
ExpirationDate = x.ExpireDate
}).ToList();
答案 0 :(得分:1)
这可能会解决问题,因为EF可能在LINQ-to-Entities查询中构造DateTime
时遇到问题:
if (search.Active)
{
if (DateTime.Now < new DateTime(DateTime.Now.Year, 10, 15))
{
DateTime date = new DateTime(DateTime.Now.Year, 5, 31);
members = members.Where(x => x.ExpireDate >= date);
}
else
{
DateTime date = new DateTime(DateTime.Now.Year + 1, 5, 31);
members = members.Where(x => x.ExpireDate >= date);
}
}