【发布时间】:2017-06-03 09:04:05
【问题描述】:
我正在尝试在 MVC 视图中显示一组到服务的连接数。
我遇到的问题是,当我尝试检查出于分页目的返回了多少项目时,我得到了 System.NotSupportedException
LINQ to Entities 不支持指定的类型成员“日期”。仅支持初始化器、实体成员和实体导航属性。
这是我的 IQueryable 方法
private IQueryable<ConnectionItem> ListItems(DataContext dataContext)
{
return
from conn in dataContext.Connections
join cfg in dataContext.Configurations on conn.ConfigID equals cfg.ConfigID
join u in dataContext.Users on cfg.UserID equals u.UserID
where conn.Successful && u.AccountEventID == 123
group 1 by conn.CreatedDate.Date into g
select new ConnectionItem
{
CreatedDate = g.Key,
NumberOfConnections = g.Count(),
};
}
这里是连接项
public class ConnectionItem
{
public DateTime CreatedDate { get; set; }
public int NumberOfConnections { get; set; }
}
我这样称呼它:
var items = ListItems(dataContext);
var total = items.Count() // this causes the exception
我的最终结果应该是日期的集合,例如 2017-01-10 和当天建立的连接数。
【问题讨论】:
-
Date是DateTime对象的一个属性,它是在运行时计算的,不能直接转换成SQL 以供LINQ 提供程序实现在服务器上进行评估。SqlFunctions中可能有一种方法可用于编写查询,以允许服务器对其进行评估:msdn.microsoft.com/en-us/library/dd456828(v=vs.110).aspx
标签: c# entity-framework linq