Have to call .ToList() on DbSets for .First() or .Single() to work. Sqlite
I have a simple dependency on a database, the schema contains 2 entities and I'm having some simple problems with making it work. I have to call
ToList
on the DbSets of the entities to make Single/First match elements. Anyone got any idea on whats wrong?
I add the context in Program.cs like this:
Context looks like this:
And I use it in a service like this:
4 Replies
Probably not the issue, but you're using
async
fairly wrong all around. .Add()
should be used rather than .AddAsync()
, and calls to .First()
, .ToList()
etc should be .FirstAsync()
and .ToListAsync()
Yeah I know, I have fiddled with the code a bit because of the problem, same thing happens if the method is completely synchronous.
@Eax Can you show your
Pipeline
class?
Nevermind, what I wanted to know is in the method signature. You're using Guid
. That's your problem. It has nothing to do with ToList()
.
SQLite doesn't support Guid
well, so when you're doing your filtering on the server side (with FirstOrDefault(x => x.Id ...)
) it doesn't find anything, but if you ToList()
, all the entities are brought client side, and there the Guid
filter works fine.
Similar issues
https://github.com/dotnet/efcore/issues/10662
https://github.com/dotnet/efcore/issues/19651Thanks, that is the issue, didn't know SQLite was that sensitive about guids.