我正在尝试选择一个整数列表,它会引发异常。
异常消息:System.ArgumentException:类型的表达式 'System.Collections.Generic.IAsyncEnumerable1 [System.Int32]'不能 用于类型的参数 'System.Collections.Generic.IAsyncEnumerable1 [System.Object]'的 方法 “System.Collections.Generic.IAsyncEnumerable1 [MyProject.Model.Entities.MyTable] CastModel” 参数名称:arg0
模型
public class MyTable {
public int MyTableId { get; set; }
public int SomeKey { get; set; }
public int MyFieldIntegerIWant { get; set; }
}
运行下面的查询(或类似的查询):
int keyId;
var ids = await context.MyTable.AsNoTracking()
.Where(x => x.SomeKey.Equals(keyId))
.Select(x => x.MyFieldIntegerIWant)
.ToListAsync();
EF Core版本:1.1.0
数据库提供程序:Microsoft.EntityFrameworkCore.SqlServer
操作系统:Windows 7
IDE:Visual Studio 2015
更新
The issue had something to do with EF Plus' QueryFilters
https://github.com/zzzprojects/EntityFramework-Plus/issues/133
答案 0 :(得分:0)
与@thejason讨论后,
问题不是由Entity Framework Plus引起的,而是由EF Core如何处理。
使用以下代码可以轻松复制该问题:
using (var ctx = new CurrentContext())
{
int keyId = 1;
var ids = ctx.MyTables
.Cast<IMyTable>()
.Cast<MyTable>()
.Where(x => x.SomeKey.Equals(keyId))
.Select(x => x.MyFieldIntegerIWant)
.ToList();
}
Cast方法将在EF Core 2.x中修复