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

异常消息:System.ArgumentException:类型'System.Collections.Generic.IAsyncEnumerable1 [System.Int32]'的表达式不能用于方法'System的'System.Collections.Generic.IAsyncEnumerable1 [System.Object]'类型的参数。 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; } 
} 

运行下面的查询(或类似的查询):

public class MyTable { 
  public int MyTableId { get; set; } 
  public int SomeKey { get; set; } 
  public int MyFieldIntegerIWant { get; set; } 
} 

更多技术细节

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有关

专家解答

与@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中修复




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因