【发布时间】:2015-11-08 19:13:27
【问题描述】:
想象以下方法。
public async Task<IHttpActionResult> Get(int id)
{
List<PageVirtualServer> pageVirtualServer = await context.PageVirtualServer
.Where(z => z.StatusPageId == id)
.ToListAsync();
List<StatusMessage> messages = await context.StatusMessages
.Where(x => pageVirtualServer.Any(
y => y.VirtualServerId == x.VirtualServerId))
.ToListAsync();
return Ok(messages);
}
出现以下异常.. “无法创建 'xy' 类型的常量值。在此上下文中仅支持原始类型或枚举类型。”
但是当将第一个查询嵌入到第二个查询中时 - 它确实有效, 没看懂。
为什么这个方法有效,但第一个无效?
public async Task<IHttpActionResult> Get(int id)
{
List<StatusMessage> messages = await context.StatusMessages
.Where(x =>
context.PageVirtualServer
.Where(z => z.StatusPageId == id)
.Any(y => y.VirtualServerId == x.VirtualServerId))
.ToListAsync();
return Ok(messages);
}
有人可以解释这种行为吗?
【问题讨论】:
-
ToListAsync不返回Task<List<object>>,而不是List<object>?您必须打开result -
即使没有异步和等待。 EF 给我一个“不支持的异常”:(
标签: c# entity-framework linq asynchronous