How does the SQLite Entity Framework 6 provider handle Guids?

c# entity-framework entity-framework-6 sqlite


I am converting the database of our product from another one that supported Guids to SQLite. Guids are not supported by SQLite, as is well known. I have an entity framework 6 model that I constructed from my database (database first), and I need to write a C# query that compares the Guid to one passed from the code.

The problem is that I can't seem to locate any documentation on the handling of Guids by the SQLite Entity Framework provider. I couldn't discover anything helpful on the internet either. Just inquiries regarding integrating SQLite with Entity Framework.

Can somebody direct me to the documentation or perhaps explain how to use Guids in an EF6 model to interact with a SQLite database?

12/3/2014 6:37:56 PM

Accepted Answer

I've finally found a solution to this issue.

My issue is that the literal Guids in your code are not handled correctly by the SQLite Entity Framework 6 provider when converting them to SQL. That is a form of the Linq phrase.

context.MyEntity.Where( x => x.GuidColumn == new Guid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx") )

becomes the following SQL after conversion:

SELECT GuidColumn, Column1, Column2, . . . Column n
FROM MyEntity AS Extent1
WHERE Extent1.GuidColumn = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

This is incorrect because the column's value is actually a byte array.

It appears from this complaint on the SQLite website that the SQLite team believes this to be a provider bug and is attempting to remedy it in version I'm not sure when that will be available, but at least they are aware of the issue and intend to address it.

1/8/2015 7:11:51 PM

Popular Answer


Related Questions


Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow