2014-04-24 4 views
16

Je travaille avec le code premier EntityFramework (version="6.1.0") et EntityFramework.Extended (version = "6.1.0.96, la dernière version au moment de here.
Le DbContext expose le DbSets qui sont accessibles comme:erreur EntityFramework.Extended Future (compilateur JIT limitation interne)

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

Aujourd'hui, je décidé d'essayer Future Queries de la bibliothèque EntityFramework.Extended, et bientôt fini à peu près, sans idée de la façon de procéder

0.

Voici l'exemple de code:

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

En ce qui concerne la documentation Future() je devrais obtenir une seule requête à la base de données qui est ce que la méthode Future() fournit. La requête doit être lancée à u.ToList(); mais ce qui se passe est que j'obtiens une erreur comme ceci:

JIT Compiler a rencontré une limitation interne.

Une plongée de trace de pile me dit ceci:

à EntityFramework.Future.FutureQueryBase 1.GetResult()

à EntityFramework.Future.FutureQuery 1.GetEnumerator()

at System.Collections.Generic.List 1..ctor (collection IEnumerable 1)

à System.Linq.Enumerable.ToList [TSource] (IEnumerable 1 so urce)

à App.Program.Main (String [] args) dans c: \ Users \ ... \ App \ Program.cs: ligne 25

Je ne sais vraiment pas ce que je Je manque. J'ai vérifié que mon ConnectionString a MultipleResultSets mis à TRUE.
J'ai testé cela avec des versions de build antérieures de EF.Exteneded mais la même erreur s'est produite.

Toute idée serait grandement utile.

+1

semble être liée à http://stackoverflow.com/a/25007352/979477 – draeron

+0

@draeron vérifié cela, mais pas de progrès, je vais vérifier maintenant, peut-être après quelques mises à jour des progrès ont été faites ... Merci pour les commentaires. –

+1

@ VedranMandić Je suis sûr que vous n'avez plus ce problème, mais: Cette erreur se produit généralement lorsque JIT compile IL qui est défectueux dans certains (mauvais types sur la pile, etc.). Je ne suis pas très familier avec EntityFramework.Extended mais je m'attendrais à ce qu'il fasse exactement cela. –

Répondre

0

Donc, pour ajouter après un an plus tard; mis à jour le Entity Framework à la dernière version 6.1.3, installé la dernière bibliothèque EntityFramework.Extended, et une chose à noter est que j'ai utilisé l'approche 'Base de données d'abord' pour le test et tout s'est bien passé. Aurait pu être d'autres choses étranges hors de mon contrôle alors.

Merci à tous pour le support sur celui-ci.

0

peut-être tort, mais je pense que

ctx.Set<User>() 

retourne un DBSet alors .Future() est censé être utilisé à la fin des requêtes. Peut-être que si vous ajoutez. AsQueryable à la fin de ctx.Set()?

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

De même je pense que vous pouvez simplement utiliser ctx.users si vous avez construit votre base de données EF de cette façon.

+0

Je ne vais pas donner -1 à ceci, mais notez ceci: 'interface publique IDbSet : IQueryable , IEnumerable , IQueryable, IEnumerable où TEntity: class', donc pas besoin de AsQueryable (). De plus, j'ai nettoyé mon fichier .tt de générer des variables nommées telles que des utilisateurs, donc ctx dans ce cas ne contient pas cela, c'est-à-dire que tous les DbSets (comme ce qu'ils sont) peuvent être accédés sur .Set . Merci pour l'effort. –

+0

Vous êtes un homme gentil et miséricordieux. –

Questions connexes