LINQ Update Error
I am getting an Server Exception on an update action. This may be my code; if so, I am sorry.
context.Prices.Where(x => codes_to_remove.Select(r => r.code).Contains(x.code)).ExecuteUpdate(setters => setters.SetProperty(p => p.is_deleted, true));
Where codes_to_remove is a IEnumerable<PricingTableElement> and
class PricingTableElement
{
public string code { get; set; }
public string name { get; set; }
public decimal rate { get; set; }
public int initial_increment { get; set; }
public int subsequential_increment { get; set; }
[ConcurrencyCheck]
[Timestamp]
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public DateTime version {get; set;}
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public bool is_deleted { get; set; } = false;
With a DBContext of
class ClickhouseDbContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);
optionsBuilder.UseClickHouse("Host=fqpnx0e8g4.us-east-2.aws.clickhouse.cloud;Protocol=https;Port=8443;Database=intl;Username=app_test;Password=jdF883k!fnwp432!$cx"
, options =>{ })
;
}
public DbSet<PricingTableElement> Prices { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
var entityTypeBuilder = modelBuilder.Entity<PricingTableElement>().HasQueryFilter(x => x.is_deleted ==false);
entityTypeBuilder.HasKey(e => e.code);
entityTypeBuilder.Property(e => e.code).HasColumnName("code");
entityTypeBuilder.Property(e => e.name).HasColumnName("name");
entityTypeBuilder.Property(e => e.rate).HasColumnName("rate");
entityTypeBuilder.Property(e => e.initial_increment).HasColumnName("initial_increment");
entityTypeBuilder.Property(e => e.subsequential_increment).HasColumnName("subsequential_increment");
entityTypeBuilder.Property(e => e.version).ValueGeneratedOnAddOrUpdate().IsRowVersion();
entityTypeBuilder.Property(e => e.is_deleted).HasColumnName("is_deleted").HasDefaultValue(false).ValueGeneratedOnUpdateSometimes();
entityTypeBuilder.ToTable("x_pricing", table => table
.HasReplacingMergeTreeEngine("version", "is_deleted")
//.HasMergeTreeEngine()
.WithPrimaryKey("code"));
}
}
The underlying table is
CREATE TABLE IF NOT EXISTS x_pricing (
`code` String,
`name` String,
`rate` Decimal(10, 6),
`initial_increment` Int32,
`subsequential_increment` Int32,
`version` DateTime,
`is_deleted` boolean DEFAULT false
) ENGINE = ReplacingMergeTree(version, is_deleted) ORDER BY code
This is the error I get
Exception has occurred: CLR/ClickHouse.Client.ClickHouseServerException An unhandled exception of type 'ClickHouse.Client.ClickHouseServerException' occurred in System.Private.CoreLib.dll: 'Code: 62. DB::Exception: Syntax error: failed at position 1 ('UPDATE') (line 1, col 1): UPDATE "x_pricing" AS "x" SET "is_deleted" = 1 WHERE NOT ("x"."is_deleted") AND "x"."code" IN ('23733325554', '23733327815', '23733320294', '23733326391', '27. Expected one of: Query, Query with output, EXPLAIN, EXPLAIN, SELECT query, possibly with UNION, list of union elements, SELECT query, subquery, possibly with UNION, SELECT subquery, SELECT query, WITH, FROM, SELECT, SHOW CREATE QUOTA query, SHOW CREATE, SHOW [FULL] [TEMPORARY] TABLES|DATABASES|CLUSTERS|CLUSTER|MERGES 'name' [[NOT] [I]LIKE 'str'] [LIMIT expr], SHOW, SHOW COLUMNS query, SHOW ENGINES query, SHOW ENGINES, SHOW FUNCTIONS query, SHOW FUNCTIONS, SHOW INDEXES query, SHOW SETTING query, SHOW SETTING, EXISTS or SHOW CREATE query, EXISTS, DESCRIBE FILESYSTEM CACHE query, DESCRIBE, DESC, DESCRIBE query, SHOW PROCESSLIST query, SHOW PROCESSLIST, CREATE TABLE or ATTACH TABLE query, CREATE, ATTACH, REPLACE, CREATE DATABASE query, CREATE VIEW query, CREATE DICTIONARY, CREATE LIVE VIEW query, CREATE WINDOW VIEW query, ALTER query, ALTER TABLE, ALTER TEMPORARY TABLE, ALTER DATABASE, RENAME query, RENAME DATABASE, RENAME TABLE, EXCHANGE TABLES, RENAME DICTIONARY, EXCHANGE DICTIONARIES, RENAME, DROP query, DROP, DETACH, TRUNCATE, UNDROP query, UNDROP, CHECK ALL TABLES, CHECK TABLE, KILL QUERY query, KILL, OPTIMIZE query, OPTIMIZE TABLE, WATCH query, WATCH, SHOW ACCESS query, SHOW ACCESS, ShowAccessEntitiesQuery, SHOW GRANTS query, SHOW GRANTS, SHOW PRIVILEGES query, SHOW PRIVILEGES, BACKUP or RESTORE query, BACKUP, RESTORE, INSERT query, INSERT INTO, USE query, USE, SET ROLE or SET DEFAULT ROLE query, SET ROLE DEFAULT, SET ROLE, SET DEFAULT ROLE, SET query, SET, SYSTEM query, SYSTEM, CREATE USER or ALTER USER query, ALTER USER, CREATE USER, CREATE ROLE or ALTER ROLE query, ALTER ROLE, CREATE ROLE, CREATE QUOTA or ALTER QUOTA query, ALTER QUOTA, CREATE QUOTA, CREATE ROW POLICY or ALTER ROW POLICY query, ALTER POLICY, ALTER ROW POLICY, CREATE POLICY, CREATE ROW POLICY, CREATE SETTINGS PROFILE or ALTER SETTINGS PROFILE query, ALTER SETTINGS PROFILE, ALTER PROFILE, CREATE SETTINGS PROFILE, CREATE PROFILE, CREATE FUNCTION query, DROP FUNCTION query, CREATE WORKLOAD query, DROP WORKLOAD query, CREATE RESOURCE query, DROP RESOURCE query, CREATE NAMED COLLECTION, DROP NAMED COLLECTION query, Alter NAMED COLLECTION query, ALTER, CREATE INDEX query, DROP INDEX query, DROP access entity query, MOVE access entity query, MOVE, GRANT or REVOKE query, REVOKE, GRANT, CHECK GRANT, CHECK GRANT, EXTERNAL DDL query, EXTERNAL DDL FROM, TCL query, BEGIN TRANSACTION, START TRANSACTION, COMMIT, ROLLBACK, SET TRANSACTION SNAPSHOT, Delete query, DELETE. (SYNTAX_ERROR) (version 24.12.1.18266 (official build))' at ClickHouse.Client.ADO.ClickHouseConnection.<HandleError>d__65.MoveNext() at ClickHouse.Client.ADO.ClickHouseCommand.<PostSqlQueryAsync>d__57.MoveNext() at ClickHouse.Client.ADO.ClickHouseCommand.<ExecuteNonQueryAsync>d__47.MoveNext() at ClickHouse.Client.ADO.ClickHouseCommand.ExecuteNonQuery() at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteNonQuery(RelationalCommandParameterObject parameterObject) at Microsoft.EntityFrameworkCore.Query.RelationalShapedQueryCompilingExpressionVisitor.<>c.<NonQueryResult>b__31_0(DbContext _, ValueTuple
3 state) at Microsoft.EntityFrameworkCore.Storage.NonRetryingExecutionStrategy.Execute[TState,TResult](TState state, Func3 operation, Func3 verifySucceeded) at Microsoft.EntityFrameworkCore.Query.RelationalShapedQueryCompilingExpressionVisitor.NonQueryResult(RelationalQueryContext relationalQueryContext, RelationalCommandResolver relationalCommandResolver, Type contextType, CommandSource commandSource, Boolean threadSafetyChecksEnabled) at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.ExecuteCore[TResult](Expression query, Boolean async, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.Execute[TResult](Expression query) at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryProvider.Execute[TResult](Expression expression) at Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.ExecuteUpdate[TSource](IQueryable1 source, Expression1 setPropertyCalls) at Program.<>c__DisplayClass0_0.<<Main>$>g__RemoveCodes|3(IEnumerable1 codes_to_remove) in C:\Users\User\source\repos\intl_rollup_test\intl_rollup_test\Program.cs:line 118 at Program.<<Main>$>d__0.MoveNext() in C:\Users\User\source\repos\intl_rollup_test\intl_rollup_test\Program.cs:line 185 at Program.<<Main>$>d__0.MoveNext() in C:\Users\User\source\repos\intl_rollup_test\intl_rollup_test\Program.cs:line 221 at Program.<Main>(String[] args)