Cosmos: ошибка при подключении к EF core 3.0 - PullRequest
0 голосов
/ 27 февраля 2020

Я использую asp. net core 3.1 и EFCore 3.1.1.

Следующий код работал нормально с EFCore 2.0, но после миграции я вижу, что он перестал работать:

var contacts = await _dbContext.Contacts.Where(co => IdVals.Any(id => id.Equals(co.ContactId)))
                                                     .Join(_dbContext.Address,
                                                            co => co.AddressId,
                                                            ad => ad.AddressId,
                                                       (co, ad) => new ContactDTO
                                                       {
                                                           ContactId = co.ContactId,
                                                           FirstName = co.FirstName,
                                                           LastName = co.LastName,
                                                           City = ad.City,
                                                           StreetAddress = ad.Street,
                                                           Country = ad.Country
                                                       })
                                                     .AsNoTracking()
                                                     .ToListAsync();

Вот подробности ошибки:

"message": "GraphQL.ExecutionError: Выражение LINQ 'DbSet \ n .Where (c => __IdVals_0 \ n .Contains (c. ContactId)) \ n .Join (\ n external: DbSet, \ n inner: c => c .AddressId, \ n outerKeySelector: a => a.AddressId, \ n innerKeySelector: (c, a ) => new TransparentIdentifier (\ n Outer = c, \ n Inner = a \ n)) 'не может быть переведен. Перепишите запрос в форме, которую можно перевести, или переключитесь на оценку клиента явно, вставив вызовите AsEnumerable (), AsAsyncEnumerable (), ToList () или ToListAsyn c (). Для получения дополнительной информации см. https://go.microsoft.com/fwlink/?linkid=2101038. \ n ---> System.InvalidOperationException: выражение LINQ 'DbSet \ n .Where (c => __IdVals_0 \ n .Contains (c .ContactId)) \ n .Join (\ n external: DbSet, \ n inner: c => * 1 034 * .AddressId, \ n outerKeySelector: a => a.AddressId, \ n innerKeySelector: (* c, a) => new TransparentIdentifier (\ n Outer = c, \ n Inner = a \ n)) ' не может быть переведено. Либо переписать запрос в форме, которую можно перевести, либо переключиться на оценку клиента явно, вставив вызов либо в AsEnumerable (), AsAsyncEnumerable (), ToList (), либо ToListAsyn c (). См. https://go.microsoft.com/fwlink/?linkid=2101038 для получения дополнительной информации. \ N на сайте Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor.g__CheckTranslated | 8_0 (ShapedQueryExpression переведено, <> c__DisplayClass8_0 & exall_ExeQhoPlayTecureCore.dll). methodCallExpression) \ n в System.Linq.Expressions.MethodCallExpression.Accept (посетитель ExpressionVisitor) \ n в System.Linq.Expressions.ExpressionVisitor.Visit (узел выражений) \ n в Microsoft.EntityFrameworkCore.Query.all_ExceptionPortalWision \ n в System.Linq.Expressions.MethodCallExpression.Accept (посетитель ExpressionVisitor) \ n в System.Linq.Expressions.ExpressionVisitor.Visit (узел выражения) \ n в Microsoft.EntityFrameworkCore.Query.QueryCompilationContext.CreateQuest ) \ n в Microsoft.EntityFrameworkCore.Storage.Database.CompileQuery [TResult] (Express ионный запрос, логическое асинхронное c) \ n в Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.CompileQueryCore [TResult] (база данных ID, запрос выражения, модель IModel, логическое асинхронное c) \ n в Microsoft.EntityFrameworkCore.Query .Internal.QueryCompiler. <> C__DisplayClass12_0 1.<ExecuteAsync>b__0()\n at Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOrAddQueryCore[TFunc](Object cacheKey, Func 1 компилятор) \ n в Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOrAddQuery [TResult] (объект cacheKey, Fun c1 compiler)\n at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.ExecuteAsync[TResult](Expression query, CancellationToken cancellationToken)\n at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryProvider.ExecuteAsync[TResult](Expression expression, CancellationToken cancellationToken)\n at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable 1.Генксация отмены выражения) n в System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable 1.GetAsyncEnumerator()\n at Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.ToListAsync[TSource](IQueryable 1 источник, CancellationToken cancellationToken) \ n в Author.Query.Persistence.ArticleService.GetArticleDetailsAsyn c (Int32 articleId, 1032 1.42D_SynageIt Int32 (CancellationToken cancellationToken) \ n в Author.Query.New.API.GraphQL.Resolvers.ArticlesResolver. <> C__DisplayClass3_1. d.MoveNext () в /src/QueryStack/Author.Query.New.API/GraphQL/Resolvers/ArticlesResolver.cs:line 41 \ n --- Конец трассировки стека из предыдущего расположения, где было сгенерировано исключение --- \ n at GraphQL.Types.ResolveFieldContext * разрешение 1018 * 2, ошибка Func`2) \ n --- Конец внутренней трассировки стека исключений --- ",

Может кто-нибудь помочь мне узнать, как решить эту проблему

...