Hallo Leute,
ich hab hier ein Problem mit der Implementierung von ThenInclude in einem Generic Repository. Ich gebe es ehrlich zu ich glaube in dem Fall reichen meine Fähigkeiten einfach nicht aus
Ich verwende aktuell EF Core 2.0 und versuche eben von einem Objekt eine Navproperty mit Include und darin wieder eine NavProperty mit ThenInclude zu laden.
Im alten EF Core ging so ein Konstrukt:
Das führ aber zu:
Im Ef Core gibt es ja eigentlich für solche Konstrukte das .ThenInclude, da ich aber eine generische Implementierung verwende und nicht direkt das Repository zugreife, steht mir ThenInclude in meiner Business Logic nicht zur Verfügung.
Darum hab ich mir versucht eine Extension zu basteln:
Leider bin ich irgendwie nicht in der Lage die Extension so zu formulieren das es klappt... kann mir jemand einen Schups in die richtige Richtung geben? Danke
ich hab hier ein Problem mit der Implementierung von ThenInclude in einem Generic Repository. Ich gebe es ehrlich zu ich glaube in dem Fall reichen meine Fähigkeiten einfach nicht aus
Ich verwende aktuell EF Core 2.0 und versuche eben von einem Objekt eine Navproperty mit Include und darin wieder eine NavProperty mit ThenInclude zu laden.
Im alten EF Core ging so ein Konstrukt:
Das führ aber zu:
The expression 'x.OfferHeads.AsQueryable().Select(y => y.OfferPositions)' is invalid inside an 'Include' operation, since it does not represent a property access: 't => t.MyProperty'. To target navigations declared on derived types, use casting ('t => ((Derived)t).MyProperty') or the 'as' operator ('t => (t as Derived).MyProperty'). Collection navigation access can be filtered by composing Where, OrderBy(Descending), ThenBy(Descending), Skip or Take operations. For more information on including related data, see go.microsoft.com/fwlink/?LinkID=746393.
Im Ef Core gibt es ja eigentlich für solche Konstrukte das .ThenInclude, da ich aber eine generische Implementierung verwende und nicht direkt das Repository zugreife, steht mir ThenInclude in meiner Business Logic nicht zur Verfügung.
Darum hab ich mir versucht eine Extension zu basteln:
C#-Quellcode
- public static IQueryable<TEntity> ThenInclude<TEntity>(this IQueryable<TEntity> queryable, string previousprop, string prop) where TEntity : class
- {
- return queryable.ThenInclude(previousprop: previousprop, prop: prop);
- }
- public static IQueryable<TEntity> ThenInclude<TEntity,TPrevProperty, TProperty>(this IQueryable<TEntity> queryable, Expression<Func<TEntity, TProperty>> predicate)
- where TEntity : class
- where TProperty : class
- {
- return EntityFrameworkQueryableExtensions.ThenInclude(queryable, predicate);
- }
Leider bin ich irgendwie nicht in der Lage die Extension so zu formulieren das es klappt... kann mir jemand einen Schups in die richtige Richtung geben? Danke
mfG.
Stephan
Stephan