【问题标题】:EntityFramework.Extended Future error (JIT Compiler internal limitation)EntityFramework.Extended Future 错误(JIT 编译器内部限制)
【发布时间】:2014-06-09 20:37:07
【问题描述】:

我正在使用 Code First EntityFramework (version="6.1.0") 和 EntityFramework.Extended (version="6.1.0.96,目前来自 here 的最新版本。
DbContext 暴露了 DbSets,其访问方式如下:

var set = ctx.Set<MyEntity>();

今天我决定尝试 EntityFramework.Extended 库的Future Queries,很快就结束了,不知道如何继续。

这里是示例代码:

using (var ctx = new MyDbContext())
{              
    var u = ctx.Set<User>().Future();
    var c = ctx.Set<Country>().Future();
    var users = u.ToList();
}

关于Future() 文档,我应该只得到一个数据库查询,这是Future() 方法提供的。查询应该在u.ToList(); 启动,但会发生这样的错误:

JIT 编译器遇到内部限制。

堆栈跟踪潜水告诉我:

在 EntityFramework.Future.FutureQueryBase 1.GetResult()

在 EntityFramework.Future.FutureQuery 1.GetEnumerator()

在 System.Collections.Generic.List 1..ctor(IEnumerable 1 集合)

在 System.Linq.Enumerable.ToList[TSource](IEnumerable 1 源)

在 c:\Users\...\App\Program.cs:第 25 行中的 App.Program.Main(String[] args)

我真的不知道我错过了什么。我检查了我的ConnectionString 已将MultipleResultSets 设置为TRUE
我已经用EF.Exteneded 的早期版本对此进行了测试,但发生了同样的错误。

任何想法都会有很大帮助。

【问题讨论】:

  • @draeron 已检查,但没有任何进展,我现在会检查,也许在一些更新取得进展后...谢谢您的反馈。
  • @VedranMandić 我确信你不再有这个问题了,但是:这个错误通常发生在 JIT 编译 IL 时出现错误(堆栈上的错误类型等) .我对 EntityFramework.Extended 不是很熟悉,但我希望它确实做到了。
  • 我确实使用具有 Id 和 Name 属性的简单 POCO 测试了您的代码,并且没有任何问题。您是否尝试过创建一个新项目并从头开始对其进行测试?
  • 尝试安装Entity Framework 6.1.3

标签: c# .net entity-framework jit entity-framework-extended


【解决方案1】:

可能是错的,但我认为

ctx.Set<User>() 

返回一个 DBSet 而 .Future() 应该在查询结束时使用。也许如果您将 .AsQueryable 附加到 ctx.Set() 的末尾?

ctx.Set<User>().AsQueryable().Future()

此外,如果您以这种方式构建 EF 数据库,我认为您可以只使用 ctx.users。

【讨论】:

  • 我不会给这个-1,但请注意:'public interface IDbSet : IQueryable, IEnumerable, IQueryable, IEnumerable where TEntity : class', 所以不需要 AsQueryable()。此外,我清理了我的 .tt 文件以生成诸如用户之类的命名变量,因此在这种情况下 ctx 不包含该变量,即所有 DbSet(就其本身而言)都可以通过 .Set 访问。感谢您的努力。
【解决方案2】:

所以一年后加起来;将实体框架更新到最新版本 6.1.3,安装了最新的EntityFramework.Extended 库,需要注意的一点是我使用“数据库优先”方法进行测试,一切正常。那可能是我无法控制的其他奇怪的东西。

感谢大家对本文的支持。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-19
    • 2020-03-06
    • 2015-12-20
    • 1970-01-01
    • 2017-06-09
    • 2011-08-26
    • 1970-01-01
    • 2010-11-08
    相关资源
    最近更新 更多