Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ExecuteUpdate does not work with owned entities #29483

Closed
virzak opened this issue Nov 4, 2022 · 3 comments
Closed

ExecuteUpdate does not work with owned entities #29483

virzak opened this issue Nov 4, 2022 · 3 comments

Comments

@virzak
Copy link

virzak commented Nov 4, 2022

File a bug

ExecuteUpdateAsync throws when updating an entity that has owned entity

This isn't mentioned as a limitation, but prevents any project that uses Owned entities to migrate to ExecuteUpdate, which I suppose would be a huge issue for quite a few projects.

Might be related to #28727

Include your code

using System;
using Microsoft.EntityFrameworkCore;

using var context = new MyDbContext();

await context.Database.EnsureDeletedAsync();
await context.Database.EnsureCreatedAsync();

await context.Posts.ExecuteUpdateAsync(s => s.SetProperty(b => b.Title, "123"));

public class MyDbContext : DbContext
{
    public DbSet<Post> Posts { get; set; } = default!;

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    => optionsBuilder
        .UseSqlServer($@"Server=(localdb)\mssqllocaldb;Database={GetType().Assembly.GetName().Name};Trusted_Connection=True").LogTo(Console.WriteLine);
}

public class Post
{
    public int Id { get; private set; }
    public StreetAddress? ShippingAddress { get; set; }
    public string Title { get; set; }
}

[Owned]
public class StreetAddress
{
    public string Street { get; set; }
    public string City { get; set; }
}

Include stack traces

System.InvalidOperationException
  HResult=0x80131509
  Message=The LINQ expression 'DbSet<Post>()
    .Select(p => IncludeExpression(
        EntityExpression:
        p, 
        NavigationExpression:
        EF.Property<StreetAddress>(p, "ShippingAddress"), ShippingAddress)
    )
    .ExecuteUpdate(s => s.SetProperty<string>(
        propertyExpression: b => b.Title, 
        valueExpression: "123"))' could not be translated. Additional information: The following lambda argument to 'SetProperty' does not represent a valid property to be set: 'b => b.Title'. See https://go.microsoft.com/fwlink/?linkid=2101038 for more information.
  Source=Microsoft.EntityFrameworkCore.Relational
  StackTrace:
   at Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at Microsoft.EntityFrameworkCore.Query.QueryCompilationContext.CreateQueryExecutor[TResult](Expression query)
   at Microsoft.EntityFrameworkCore.Storage.Database.CompileQuery[TResult](Expression query, Boolean async)
   at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.CompileQueryCore[TResult](IDatabase database, Expression query, IModel model, Boolean async)
   at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass12_0`1.<ExecuteAsync>b__0()
   at Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOrAddQuery[TResult](Object cacheKey, Func`1 compiler)
   at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.ExecuteAsync[TResult](Expression query, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryProvider.ExecuteAsync[TResult](Expression expression, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.RelationalQueryableExtensions.ExecuteUpdateAsync[TSource](IQueryable`1 source, Expression`1 setPropertyCalls, CancellationToken cancellationToken)
   at Program.<<Main>$>d__0.MoveNext() in Q:\Code\Sandbox\Playground\Playground\ExecuteUpdateBug.cs:line 9

Include verbose output

C:\Stuff\AllTogetherNow\FiveOh>dotnet ef dbcontext list --verbose
Using project 'C:\Stuff\AllTogetherNow\FiveOh\FiveOh.csproj'.
...
dbug: 2022-11-04 16:12:24.235 CoreEventId.ShadowPropertyCreated[10600] (Microsoft.EntityFrameworkCore.Model.Validation)
      The property 'StreetAddress.PostId' was created in shadow state because there are no eligible CLR members with a matching name.
dbug: 2022-11-04 16:12:24.366 CoreEventId.ContextInitialized[10403] (Microsoft.EntityFrameworkCore.Infrastructure)
      Entity Framework Core 7.0.0-rtm.22511.9 initialized 'MyDbContext' using provider 'Microsoft.EntityFrameworkCore.SqlServer:7.0.0-rtm.22511.9' with options: None
dbug: 2022-11-04 16:12:24.393 RelationalEventId.ConnectionCreating[20005] (Microsoft.EntityFrameworkCore.Database.Connection)
      Creating DbConnection.
dbug: 2022-11-04 16:12:24.442 RelationalEventId.ConnectionCreated[20006] (Microsoft.EntityFrameworkCore.Database.Connection)
      Created DbConnection. (50ms).
dbug: 2022-11-04 16:12:24.445 RelationalEventId.ConnectionOpening[20000] (Microsoft.EntityFrameworkCore.Database.Connection)
      Opening connection to database 'Playground' on server '(localdb)\mssqllocaldb'.
dbug: 2022-11-04 16:12:24.722 RelationalEventId.ConnectionOpened[20001] (Microsoft.EntityFrameworkCore.Database.Connection)
      Opened connection to database 'Playground' on server '(localdb)\mssqllocaldb'.
dbug: 2022-11-04 16:12:24.730 RelationalEventId.CommandCreating[20103] (Microsoft.EntityFrameworkCore.Database.Command)
      Creating DbCommand for 'ExecuteNonQuery'.
dbug: 2022-11-04 16:12:24.735 RelationalEventId.CommandCreated[20104] (Microsoft.EntityFrameworkCore.Database.Command)
      Created DbCommand for 'ExecuteNonQuery' (4ms).
dbug: 2022-11-04 16:12:24.737 RelationalEventId.CommandInitialized[20106] (Microsoft.EntityFrameworkCore.Database.Command)
      Initialized DbCommand for 'ExecuteNonQuery' (9ms).
dbug: 2022-11-04 16:12:24.742 RelationalEventId.CommandExecuting[20100] (Microsoft.EntityFrameworkCore.Database.Command)
      Executing DbCommand [Parameters=[], CommandType='Text', CommandTimeout='30']
      SELECT 1
info: 2022-11-04 16:12:24.779 RelationalEventId.CommandExecuted[20101] (Microsoft.EntityFrameworkCore.Database.Command)
      Executed DbCommand (34ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      SELECT 1
dbug: 2022-11-04 16:12:24.783 RelationalEventId.ConnectionClosing[20002] (Microsoft.EntityFrameworkCore.Database.Connection)
      Closing connection to database 'Playground' on server '(localdb)\mssqllocaldb'.
dbug: 2022-11-04 16:12:24.790 RelationalEventId.ConnectionClosed[20003] (Microsoft.EntityFrameworkCore.Database.Connection)
      Closed connection to database 'Playground' on server '(localdb)\mssqllocaldb' (4ms).
dbug: 2022-11-04 16:12:24.852 RelationalEventId.ConnectionCreating[20005] (Microsoft.EntityFrameworkCore.Database.Connection)
      Creating DbConnection.
dbug: 2022-11-04 16:12:24.853 RelationalEventId.ConnectionCreated[20006] (Microsoft.EntityFrameworkCore.Database.Connection)
      Created DbConnection. (0ms).
dbug: 2022-11-04 16:12:24.853 RelationalEventId.ConnectionOpening[20000] (Microsoft.EntityFrameworkCore.Database.Connection)
      Opening connection to database 'master' on server '(localdb)\mssqllocaldb'.
dbug: 2022-11-04 16:12:24.866 RelationalEventId.ConnectionOpened[20001] (Microsoft.EntityFrameworkCore.Database.Connection)
      Opened connection to database 'master' on server '(localdb)\mssqllocaldb'.
dbug: 2022-11-04 16:12:24.869 RelationalEventId.CommandCreating[20103] (Microsoft.EntityFrameworkCore.Database.Command)
      Creating DbCommand for 'ExecuteNonQuery'.
dbug: 2022-11-04 16:12:24.869 RelationalEventId.CommandCreated[20104] (Microsoft.EntityFrameworkCore.Database.Command)
      Created DbCommand for 'ExecuteNonQuery' (0ms).
dbug: 2022-11-04 16:12:24.870 RelationalEventId.CommandInitialized[20106] (Microsoft.EntityFrameworkCore.Database.Command)
      Initialized DbCommand for 'ExecuteNonQuery' (0ms).
dbug: 2022-11-04 16:12:24.870 RelationalEventId.CommandExecuting[20100] (Microsoft.EntityFrameworkCore.Database.Command)

      Executing DbCommand [Parameters=[], CommandType='Text', CommandTimeout='60']
      IF SERVERPROPERTY('EngineEdition') <> 5
      BEGIN
          ALTER DATABASE [Playground] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
      END;
info: 2022-11-04 16:12:27.886 RelationalEventId.CommandExecuted[20101] (Microsoft.EntityFrameworkCore.Database.Command)
      Executed DbCommand (3,016ms) [Parameters=[], CommandType='Text', CommandTimeout='60']
      IF SERVERPROPERTY('EngineEdition') <> 5
      BEGIN
          ALTER DATABASE [Playground] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
      END;
dbug: 2022-11-04 16:12:27.887 RelationalEventId.CommandCreating[20103] (Microsoft.EntityFrameworkCore.Database.Command)
      Creating DbCommand for 'ExecuteNonQuery'.
dbug: 2022-11-04 16:12:27.887 RelationalEventId.CommandCreated[20104] (Microsoft.EntityFrameworkCore.Database.Command)
      Created DbCommand for 'ExecuteNonQuery' (0ms).
dbug: 2022-11-04 16:12:27.887 RelationalEventId.CommandInitialized[20106] (Microsoft.EntityFrameworkCore.Database.Command)
      Initialized DbCommand for 'ExecuteNonQuery' (0ms).
dbug: 2022-11-04 16:12:27.887 RelationalEventId.CommandExecuting[20100] (Microsoft.EntityFrameworkCore.Database.Command)

      Executing DbCommand [Parameters=[], CommandType='Text', CommandTimeout='60']
      DROP DATABASE [Playground];
info: 2022-11-04 16:12:27.900 RelationalEventId.CommandExecuted[20101] (Microsoft.EntityFrameworkCore.Database.Command)
      Executed DbCommand (12ms) [Parameters=[], CommandType='Text', CommandTimeout='60']
      DROP DATABASE [Playground];
dbug: 2022-11-04 16:12:27.900 RelationalEventId.ConnectionClosing[20002] (Microsoft.EntityFrameworkCore.Database.Connection)
      Closing connection to database 'master' on server '(localdb)\mssqllocaldb'.
dbug: 2022-11-04 16:12:27.900 RelationalEventId.ConnectionClosed[20003] (Microsoft.EntityFrameworkCore.Database.Connection)
      Closed connection to database 'master' on server '(localdb)\mssqllocaldb' (0ms).
dbug: 2022-11-04 16:12:27.903 RelationalEventId.ConnectionDisposing[20007] (Microsoft.EntityFrameworkCore.Database.Connection)
      Disposing connection to database 'master' on server '(localdb)\mssqllocaldb'.
dbug: 2022-11-04 16:12:27.904 RelationalEventId.ConnectionDisposed[20008] (Microsoft.EntityFrameworkCore.Database.Connection)
      Disposed connection to database '' on server '' (0ms).
dbug: 2022-11-04 16:12:27.905 RelationalEventId.ConnectionOpening[20000] (Microsoft.EntityFrameworkCore.Database.Connection)
      Opening connection to database 'Playground' on server '(localdb)\mssqllocaldb'.
dbug: 2022-11-04 16:12:27.917 RelationalEventId.ConnectionError[20004] (Microsoft.EntityFrameworkCore.Database.Connection)
      An error occurred using the connection to database 'Playground' on server '(localdb)\mssqllocaldb'.
dbug: 2022-11-04 16:12:27.934 CoreEventId.ShadowPropertyCreated[10600] (Microsoft.EntityFrameworkCore.Model.Validation)
      The property 'StreetAddress.PostId' was created in shadow state because there are no eligible CLR members with a matching name.
dbug: 2022-11-04 16:12:27.943 RelationalEventId.ConnectionCreating[20005] (Microsoft.EntityFrameworkCore.Database.Connection)
      Creating DbConnection.
dbug: 2022-11-04 16:12:27.943 RelationalEventId.ConnectionCreated[20006] (Microsoft.EntityFrameworkCore.Database.Connection)
      Created DbConnection. (0ms).
dbug: 2022-11-04 16:12:27.943 RelationalEventId.ConnectionOpening[20000] (Microsoft.EntityFrameworkCore.Database.Connection)
      Opening connection to database 'master' on server '(localdb)\mssqllocaldb'.
dbug: 2022-11-04 16:12:27.945 RelationalEventId.ConnectionOpened[20001] (Microsoft.EntityFrameworkCore.Database.Connection)
      Opened connection to database 'master' on server '(localdb)\mssqllocaldb'.
dbug: 2022-11-04 16:12:27.945 RelationalEventId.CommandCreating[20103] (Microsoft.EntityFrameworkCore.Database.Command)
      Creating DbCommand for 'ExecuteNonQuery'.
dbug: 2022-11-04 16:12:27.945 RelationalEventId.CommandCreated[20104] (Microsoft.EntityFrameworkCore.Database.Command)
      Created DbCommand for 'ExecuteNonQuery' (0ms).
dbug: 2022-11-04 16:12:27.945 RelationalEventId.CommandInitialized[20106] (Microsoft.EntityFrameworkCore.Database.Command)
      Initialized DbCommand for 'ExecuteNonQuery' (0ms).
dbug: 2022-11-04 16:12:27.945 RelationalEventId.CommandExecuting[20100] (Microsoft.EntityFrameworkCore.Database.Command)

      Executing DbCommand [Parameters=[], CommandType='Text', CommandTimeout='60']
      CREATE DATABASE [Playground];
info: 2022-11-04 16:12:28.077 RelationalEventId.CommandExecuted[20101] (Microsoft.EntityFrameworkCore.Database.Command)
      Executed DbCommand (132ms) [Parameters=[], CommandType='Text', CommandTimeout='60']
      CREATE DATABASE [Playground];
dbug: 2022-11-04 16:12:28.077 RelationalEventId.CommandCreating[20103] (Microsoft.EntityFrameworkCore.Database.Command)
      Creating DbCommand for 'ExecuteNonQuery'.
dbug: 2022-11-04 16:12:28.078 RelationalEventId.CommandCreated[20104] (Microsoft.EntityFrameworkCore.Database.Command)
      Created DbCommand for 'ExecuteNonQuery' (0ms).
dbug: 2022-11-04 16:12:28.078 RelationalEventId.CommandInitialized[20106] (Microsoft.EntityFrameworkCore.Database.Command)
      Initialized DbCommand for 'ExecuteNonQuery' (0ms).
dbug: 2022-11-04 16:12:28.078 RelationalEventId.CommandExecuting[20100] (Microsoft.EntityFrameworkCore.Database.Command)

      Executing DbCommand [Parameters=[], CommandType='Text', CommandTimeout='60']
      IF SERVERPROPERTY('EngineEdition') <> 5
      BEGIN
          ALTER DATABASE [Playground] SET READ_COMMITTED_SNAPSHOT ON;
      END;
info: 2022-11-04 16:12:28.109 RelationalEventId.CommandExecuted[20101] (Microsoft.EntityFrameworkCore.Database.Command)
      Executed DbCommand (31ms) [Parameters=[], CommandType='Text', CommandTimeout='60']
      IF SERVERPROPERTY('EngineEdition') <> 5
      BEGIN
          ALTER DATABASE [Playground] SET READ_COMMITTED_SNAPSHOT ON;
      END;
dbug: 2022-11-04 16:12:28.110 RelationalEventId.ConnectionClosing[20002] (Microsoft.EntityFrameworkCore.Database.Connection)
      Closing connection to database 'master' on server '(localdb)\mssqllocaldb'.
dbug: 2022-11-04 16:12:28.110 RelationalEventId.ConnectionClosed[20003] (Microsoft.EntityFrameworkCore.Database.Connection)
      Closed connection to database 'master' on server '(localdb)\mssqllocaldb' (0ms).
dbug: 2022-11-04 16:12:28.111 RelationalEventId.ConnectionDisposing[20007] (Microsoft.EntityFrameworkCore.Database.Connection)
      Disposing connection to database 'master' on server '(localdb)\mssqllocaldb'.
dbug: 2022-11-04 16:12:28.111 RelationalEventId.ConnectionDisposed[20008] (Microsoft.EntityFrameworkCore.Database.Connection)
      Disposed connection to database '' on server '' (0ms).
dbug: 2022-11-04 16:12:28.111 RelationalEventId.ConnectionOpening[20000] (Microsoft.EntityFrameworkCore.Database.Connection)
      Opening connection to database 'Playground' on server '(localdb)\mssqllocaldb'.
dbug: 2022-11-04 16:12:28.120 RelationalEventId.ConnectionOpened[20001] (Microsoft.EntityFrameworkCore.Database.Connection)
      Opened connection to database 'Playground' on server '(localdb)\mssqllocaldb'.
dbug: 2022-11-04 16:12:28.121 RelationalEventId.CommandCreating[20103] (Microsoft.EntityFrameworkCore.Database.Command)
      Creating DbCommand for 'ExecuteNonQuery'.
dbug: 2022-11-04 16:12:28.122 RelationalEventId.CommandCreated[20104] (Microsoft.EntityFrameworkCore.Database.Command)
      Created DbCommand for 'ExecuteNonQuery' (0ms).
dbug: 2022-11-04 16:12:28.122 RelationalEventId.CommandInitialized[20106] (Microsoft.EntityFrameworkCore.Database.Command)
      Initialized DbCommand for 'ExecuteNonQuery' (0ms).
dbug: 2022-11-04 16:12:28.122 RelationalEventId.CommandExecuting[20100] (Microsoft.EntityFrameworkCore.Database.Command)

      Executing DbCommand [Parameters=[], CommandType='Text', CommandTimeout='30']
      SELECT 1
info: 2022-11-04 16:12:28.123 RelationalEventId.CommandExecuted[20101] (Microsoft.EntityFrameworkCore.Database.Command)
      Executed DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      SELECT 1
dbug: 2022-11-04 16:12:28.123 RelationalEventId.ConnectionClosing[20002] (Microsoft.EntityFrameworkCore.Database.Connection)
      Closing connection to database 'Playground' on server '(localdb)\mssqllocaldb'.
dbug: 2022-11-04 16:12:28.123 RelationalEventId.ConnectionClosed[20003] (Microsoft.EntityFrameworkCore.Database.Connection)
      Closed connection to database 'Playground' on server '(localdb)\mssqllocaldb' (0ms).
dbug: 2022-11-04 16:12:28.168 RelationalEventId.ConnectionOpening[20000] (Microsoft.EntityFrameworkCore.Database.Connection)
      Opening connection to database 'Playground' on server '(localdb)\mssqllocaldb'.
dbug: 2022-11-04 16:12:28.169 RelationalEventId.ConnectionOpened[20001] (Microsoft.EntityFrameworkCore.Database.Connection)
      Opened connection to database 'Playground' on server '(localdb)\mssqllocaldb'.
dbug: 2022-11-04 16:12:28.172 RelationalEventId.TransactionStarting[20209] (Microsoft.EntityFrameworkCore.Database.Transaction)
      Beginning transaction with isolation level 'Unspecified'.
dbug: 2022-11-04 16:12:28.179 RelationalEventId.TransactionStarted[20200] (Microsoft.EntityFrameworkCore.Database.Transaction)
      Began transaction with isolation level 'ReadCommitted'.
dbug: 2022-11-04 16:12:28.180 RelationalEventId.CommandCreating[20103] (Microsoft.EntityFrameworkCore.Database.Command)
      Creating DbCommand for 'ExecuteNonQuery'.
dbug: 2022-11-04 16:12:28.180 RelationalEventId.CommandCreated[20104] (Microsoft.EntityFrameworkCore.Database.Command)
      Created DbCommand for 'ExecuteNonQuery' (0ms).
dbug: 2022-11-04 16:12:28.181 RelationalEventId.CommandInitialized[20106] (Microsoft.EntityFrameworkCore.Database.Command)
      Initialized DbCommand for 'ExecuteNonQuery' (1ms).
dbug: 2022-11-04 16:12:28.181 RelationalEventId.CommandExecuting[20100] (Microsoft.EntityFrameworkCore.Database.Command)

      Executing DbCommand [Parameters=[], CommandType='Text', CommandTimeout='30']
      CREATE TABLE [Posts] (
          [Id] int NOT NULL IDENTITY,
          [ShippingAddress_Street] nvarchar(max) NULL,
          [ShippingAddress_City] nvarchar(max) NULL,
          [Title] nvarchar(max) NOT NULL,
          CONSTRAINT [PK_Posts] PRIMARY KEY ([Id])
      );
info: 2022-11-04 16:12:28.186 RelationalEventId.CommandExecuted[20101] (Microsoft.EntityFrameworkCore.Database.Command)
      Executed DbCommand (5ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      CREATE TABLE [Posts] (
          [Id] int NOT NULL IDENTITY,
          [ShippingAddress_Street] nvarchar(max) NULL,
          [ShippingAddress_City] nvarchar(max) NULL,
          [Title] nvarchar(max) NOT NULL,
          CONSTRAINT [PK_Posts] PRIMARY KEY ([Id])
      );
dbug: 2022-11-04 16:12:28.189 RelationalEventId.TransactionCommitting[20210] (Microsoft.EntityFrameworkCore.Database.Transaction)
      Committing transaction.
dbug: 2022-11-04 16:12:28.193 RelationalEventId.TransactionCommitted[20202] (Microsoft.EntityFrameworkCore.Database.Transaction)
      Committed transaction.
dbug: 2022-11-04 16:12:28.196 RelationalEventId.TransactionDisposed[20204] (Microsoft.EntityFrameworkCore.Database.Transaction)
      Disposing transaction.
dbug: 2022-11-04 16:12:28.196 RelationalEventId.ConnectionClosing[20002] (Microsoft.EntityFrameworkCore.Database.Connection)
      Closing connection to database 'Playground' on server '(localdb)\mssqllocaldb'.
dbug: 2022-11-04 16:12:28.197 RelationalEventId.ConnectionClosed[20003] (Microsoft.EntityFrameworkCore.Database.Connection)
      Closed connection to database 'Playground' on server '(localdb)\mssqllocaldb' (0ms).
dbug: 2022-11-04 16:12:28.229 CoreEventId.QueryCompilationStarting[10111] (Microsoft.EntityFrameworkCore.Query)
      Compiling query expression:
      'DbSet<Post>()
          .ExecuteUpdate(s => s.SetProperty<string>(
              propertyExpression: b => b.Title,
              valueExpression: "123"))'
dbug: 2022-11-04 16:12:28.298 CoreEventId.NavigationBaseIncluded[10112] (Microsoft.EntityFrameworkCore.Query)
      Including navigation: 'Post.ShippingAddress'.
dbug: 2022-11-04 16:36:38.252 CoreEventId.ContextDisposed[10407] (Microsoft.EntityFrameworkCore.Infrastructure)
      'MyDbContext' disposed.
dbug: 2022-11-04 16:36:38.253 RelationalEventId.ConnectionDisposing[20007] (Microsoft.EntityFrameworkCore.Database.Connection)
      Disposing connection to database 'Playground' on server '(localdb)\mssqllocaldb'.
dbug: 2022-11-04 16:36:38.253 RelationalEventId.ConnectionDisposed[20008] (Microsoft.EntityFrameworkCore.Database.Connection)
      Disposed connection to database '' on server '' (0ms).
Unhandled exception. System.InvalidOperationException: The LINQ expression 'DbSet<Post>()
    .Select(p => IncludeExpression(
        EntityExpression:
        p,
        NavigationExpression:
        EF.Property<StreetAddress>(p, "ShippingAddress"), ShippingAddress)
    )
    .ExecuteUpdate(s => s.SetProperty<string>(
        propertyExpression: b => b.Title,
        valueExpression: "123"))' could not be translated. Additional information: The following lambda argument to 'SetProperty' does not represent a valid property to be set: 'b => b.Title'. See https://go.microsoft.com/fwlink/?linkid=2101038 for more information.
   at Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at Microsoft.EntityFrameworkCore.Query.QueryCompilationContext.CreateQueryExecutor[TResult](Expression query)
   at Microsoft.EntityFrameworkCore.Storage.Database.CompileQuery[TResult](Expression query, Boolean async)
   at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.CompileQueryCore[TResult](IDatabase database, Expression query, IModel model, Boolean async)
   at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass12_0`1.<ExecuteAsync>b__0()
   at Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOrAddQuery[TResult](Object cacheKey, Func`1 compiler)
   at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.ExecuteAsync[TResult](Expression query, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryProvider.ExecuteAsync[TResult](Expression expression, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.RelationalQueryableExtensions.ExecuteUpdateAsync[TSource](IQueryable`1 source, Expression`1 setPropertyCalls, CancellationToken cancellationToken)
   at Program.<Main>$(String[] args) in Q:\Code\Sandbox\Playground\Playground\ExecuteUpdateBug.cs:line 9
   at Program.<Main>(String[] args)

Q:\Code\Sandbox\Playground\Playground\bin\Debug\net7.0\Playground.exe (process 25508) exited with code 0.
To automatically close the console when debugging stops, enable Tools->Options->Debugging->Automatically close the console when debugging stops.
Press any key to close this window . . .

Include provider and version information

EF Core version: 7.0.0-rtm.22511.4
Database provider: Microsoft.EntityFrameworkCore.SqlServer
Target framework: .NET 7.0
Operating system: Windows 11 22H2
IDE: Visual Studio 2022 Version 17.4.0 Preview 6.0

@Xeio
Copy link

Xeio commented Nov 9, 2022

I've run into this same issue on my project. Migrated most of my bulk updates to the new API but one of my tables has [Owned] entities that shows the same type of error, in my case the "ActiveMerchant" object owns a "Card" and "Rapport" which both cause the problem.

System.InvalidOperationException
  HResult=0x80131509
  Message=The LINQ expression 'DbSet<ActiveMerchant>()
    .Where(a => a.UploadedByUserId == __merchant_UploadedByUserId_0)
    .Select(a => IncludeExpression(
        EntityExpression:
        IncludeExpression(
            EntityExpression:
            a, 
            NavigationExpression:
            EF.Property<Item>(a, "Card"), Card)
        , 
        NavigationExpression:
        EF.Property<Item>(a, "Rapport"), Rapport)
    )
    .ExecuteUpdate(u => u.SetProperty<bool>(
        propertyExpression: m => m.RequiresLeaderboardProcessing, 
        valueExpression: m => False))' could not be translated. Additional information: The following lambda argument to 'SetProperty' does not represent a valid property to be set: 'm => m.RequiresLeaderboardProcessing'. See https://go.microsoft.com/fwlink/?linkid=2101038 for more information.
  Source=Microsoft.EntityFrameworkCore.Relational
  StackTrace:
   at Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at Microsoft.EntityFrameworkCore.Query.QueryCompilationContext.CreateQueryExecutor[TResult](Expression query)
   at Microsoft.EntityFrameworkCore.Storage.Database.CompileQuery[TResult](Expression query, Boolean async)
   at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.CompileQueryCore[TResult](IDatabase database, Expression query, IModel model, Boolean async)
   at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass12_0`1.<ExecuteAsync>b__0()
   at Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOrAddQuery[TResult](Object cacheKey, Func`1 compiler)
   at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.ExecuteAsync[TResult](Expression query, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryProvider.ExecuteAsync[TResult](Expression expression, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.RelationalQueryableExtensions.ExecuteUpdateAsync[TSource](IQueryable`1 source, Expression`1 setPropertyCalls, CancellationToken cancellationToken)
   at WanderLost.Server.Controllers.LeaderboardProcessor.<ExecuteAsync>d__3.MoveNext() in C:\Users\joshu\source\repos\WanderLost\WanderLost\WanderLost\Server\Controllers\LeaderboardProcessor.cs:line 112

@virzak
Copy link
Author

virzak commented Nov 9, 2022

I hope a fix for this can make it into 7.0.1 release. Not sure how many serious projects don't have owned entities.

@ajcvickers
Copy link
Contributor

Duplicate of #28727. Make sure to vote (👍) for #28727.

@ajcvickers ajcvickers closed this as not planned Won't fix, can't repro, duplicate, stale Nov 9, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants