2010-08-07 5 views
2

J'utilise d'abord le code EF4 CPT4 et j'ai configuré mon objet ObjectContext pour retourner IObjectSet afin que je puisse mocker et tester mes repos. Cependant, j'ai maintenant remarqué que je suis incapable d'utiliser la méthode .Include() pour un chargement enthousiaste comme je le ferais si j'utilisais ObjectSet.entity framework 4 IObjectSet include

Y at-il un moyen de faire ce travail ???

Edit: J'ai ajouté cette méthode d'extension:

public static IQueryable<TSource> Include<TSource>(this IQueryable<TSource> source, string path) 
{ 
    var objectQuery = source as ObjectQuery<TSource>; 
    return objectQuery == null ? source : objectQuery.Include(path); 
} 

Et il a toutefois ajouté l'obtenir toutefois la méthode include(), je maintenant cette erreur:

LINQ to Entities does not recognize the method 'System.Linq.IQueryable`1[PostHope.Core.DomainObjects.SiteAnnouncement] Include[SiteAnnouncement](System.Linq.IQueryable`1[PostHope.Core.DomainObjects.SiteAnnouncement], System.String)' method, and this method cannot be translated into a store expression. 
+0

Comment appelez-vous la méthode Include? – Jonathan

+0

D'après une méthode d'extension (Du blog de Julie Lerman http://thedatafarm.com/blog/data-access/agile-entity-framework-4-repository-part-5-iobjectset/) Aussi dans son nouveau livre. Je n'ai toujours pas trouvé de solution. Ce post est le même problème: http://stackoverflow.com/questions/2655886/iobjectset-include-extension-method-errors-with-compiledquery – Paul

Répondre

1

Réponse EF Équipe:

Ceci est un problème connu avec CTP4, Include est une méthode d'instance sur ObjectSet mais lorsque votre jeu est tapé en tant que IObjectSet vous utilisez en fait une méthode d'extension sur IQ ueryable qui est inclus dans CTP4. Cette méthode d'extension ne fonctionne pas avec les requêtes compilées, mais nous essaierons de le faire dans la prochaine version.

~ Rowan

Questions connexes