Как запустить EF Core ExecuteUpdateAsync и добавить новый объект как часть этого обновления?C#

Место общения программистов C#
Anonymous
Как запустить EF Core ExecuteUpdateAsync и добавить новый объект как часть этого обновления?

Сообщение Anonymous »

Я запускаю приведенный ниже код, но получаю исключение YogabandyFee при его запуске.

Код: Выделить всё

var payoutResult = await _dbContext.StripePayouts
.Where(p => p.StripePayoutId == stripePayoutId)
.Select(p => new { p.GrossAmount, p.TotalTokens, p.NetAmount, p.ReconciledTransfers, p.EditedDate, p.YogabandyFee })
.ExecuteUpdateAsync(setters => setters
.SetProperty(p => p.GrossAmount, grossAmount)
.SetProperty(p => p.TotalTokens, totalTokens)
.SetProperty(p => p.YogabandyFee, p => new YogabandyFee { TotalFee = (grossAmount - p.NetAmount - platformFee) } )
.SetProperty(p => p.ReconciledTransfers, true)
.SetProperty(p => p.EditedDate, DateTime.UtcNow)
);
Можно ли это сделать?
Могу ли я создать новую запись в этом типе обновления?
Вот ошибка:
Можно ли это сделать?
Могу ли я создать новую запись в этом типе обновления?
Вот ошибка:
Можно ли это сделать? p>

System.InvalidOperationException: выражение LINQ 'DbSet() .Where(s => s.StripePayoutId == __stripePayoutId_0).LeftJoin(inner: DbSet(), externalKeySelector : s => EF.Property(s, «Id»), InnerKeySelector: y => EF.Property(y, «StripePayoutId»), resultSelector: (o, i) => new TransparentIdentifier( Outer = o, Inner = i )) .Select(s => new { GrossAmount = s.Outer.GrossAmount, TotalTokens = s.Outer.TotalTokens, NetAmount = s.Outer.NetAmount, ReconciledTransfers = s.Outer.ReconciledTransfers, EditedDate = s.Outer.EditedDate, YogabandyFee = s.Inner }).ExecuteUpdate(setters => setters.SetProperty(propertyExpression: p => p.GrossAmount, valueExpression: __grossAmount_1).SetProperty(propertyExpression: p => p.TotalTokens, valueExpression: __totalTokens_2).SetProperty(propertyExpression : p => p.ReconciledTransfers, valueExpression: True).SetProperty(propertyExpression: p => p.EditedDate, valueExpression: DateTime.UtcNow).SetProperty(propertyExpression: p => p.YogabandyFee, valueExpression: p => new YogabandyFee{ TotalFee = __grossAmount_1 - p.NetAmount - __platformFee_3 } ))' не удалось перевести. Дополнительная информация: Следующий лямбда-аргумент SetProperty не представляет собой допустимое свойство, которое нужно установить: «p => p.YogabandyFee». Дополнительную информацию см. на https://go.microsoft.com/fwlink/?linkid=2101038. в Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression MethodCallExpression) в Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor.Translate(выражение выражения) в Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor.Translate(Ex) выражение сжатия) в Microsoft.EntityFrameworkCore.Query.QueryCompilationContext .CreateQueryExecutor[TResult](запрос выражения) в Microsoft.EntityFrameworkCore.Storage.Database.CompileQuery[TResult](запрос выражения, логический асинхронный запрос) в Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.CompileQueryCore[TResult](база данных IDatabase, запрос выражения) , модель IModel, логическая асинхронность) в Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.c__DisplayClass12_0

Код: Выделить всё

1.b__0() at Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOrAddQuery[TResult](Object cacheKey, Func
1 компилятор) в Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.ExecuteAsync[TResult](запрос выражения, CancellationToken cancelToken) в Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryProvider.ExecuteAsync[TResult](выражение выражения, CancellationToken cancelToken) ) в Microsoft.EntityFrameworkCore.RelationalQueryableExtensions.ExecuteUpdateAsync[TSource](IQueryable

Код: Выделить всё

1 source, Expression
1 setPropertyCalls, CancellationToken cancelToken) в Functions.ReconcileTransfers.Run(String myQueueItem) в /Users/charles/yogabandy2020/Functions/ReconcileTransfers.cs:строка 119


Подробнее здесь: https://stackoverflow.com/questions/786 ... f-that-upd

Вернуться в «C#»