简单的Linq选择不工作

问题描述 投票:0回答:1

我正在尝试选择一个整数列表,它正在引发异常。

异常消息:System.ArgumentException:类型'System.Collections.Generic.IAsyncEnumerable1 [System.Int32]'的表达式不能用于方法'System'的类型'System.Collections.Generic.IAsyncEnumerable1 [System.Object]'的参数。 Collections.Generic.IAsyncEnumerable1 [MyProject.Model.Entities.MyTable] CastModel'参数名称:arg0

Steps to reproduce

模型

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();

Further technical details

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

c# linq asp.net-core entity-framework-core entity-framework-plus
1个回答
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中修复

© www.soinside.com 2019 - 2024. All rights reserved.