Closed RouR closed 3 years ago
I see. Will check. Could you please try the following as a workaround:
using var db = dbContext.CreateLinqToDBConnection();
var query = db.GetTable<SomeItem>.Where(x => x.IsDeleted && x.Updated < dateTime).Take(20);
return await db.GetTable<SomeItem>
.Where(x => query
.Select(y => y.PrimaryKeyStringId)
.Contains(x.PrimaryKeyStringId)
)
.DeleteAsync();
workaround is work, thx
Just for clarification. Why query is so complicated? You should have the same result with simplified query
using var db = dbContext.CreateLinqToDBConnection();
var query = db.GetTable<SomeItem>.Where(x => x.IsDeleted && x.Updated < dateTime).Take(20);
return await query.DeleteAsync();
"simplified query" is not work
DELETE FROM
[SomeItem]
WHERE
[SomeItem].[IsDeleted] = 1 AND DateTime([SomeItem].[UpdatedUtc]) < DateTime(@dateTimeOffset)
LIMIT @take
SQLite Error 1: 'near "LIMIT": syntax error'
complicated query is ok
DELETE FROM
[SomeItem]
WHERE
[SomeItem].[SomeItemId] IN (
SELECT
[t1].[SomeItemId]
FROM
(
SELECT
[x].[SomeItemId]
FROM
[SomeItem] [x]
WHERE
[x].[IsDeleted] = 1 AND DateTime([x].[UpdatedUtc]) < DateTime(@dateTimeOffset)
LIMIT @take
) [t1]
)
I see. Looks like we should handle that automatically. But thanks for pointing which provider do you use ;)
thanks
linq2db 3.1.6 linq2db.EntityFrameworkCore 5.0.2 Microsoft.EntityFrameworkCore 5.0.0 TargetFramework net5.0
It was ok before upgrade to 5.0