我正在从另一个支持Guids的产品中将我们产品的数据库移植到SQLite。正如我们所知,SQLite不支持Guids。我已经从我的数据库(首先是数据库)创建了一个实体框架6模型,我需要从C#构建一个查询,将Guid与从代码中传递的查询进行比较。
问题是,我找不到任何关于SQLite实体框架提供程序如何处理Guids的文档。网络搜索也没有发现任何对我有用的东西。关于如何将实体框架与SQLite结合使用的问题。
有人能告诉我文档,或者告诉我如何通过SQLite模型在EF6数据库中使用Guid吗?
发布于 2015-01-08 18:37:30
我终于找到了这个问题的答案。
我的问题是,SQLite实体框架6提供程序无法正确地处理将代码中的文字指南转换为SQL的问题。,即窗体的Linq表达式。
context.MyEntity.Where( x => x.GuidColumn == new Guid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx") )获取将其转换为以下SQL:
SELECT GuidColumn, Column1, Column2, . . . Column n
FROM MyEntity AS Extent1
WHERE Extent1.GuidColumn = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"这是错误的,因为列中存储的值是一个字节数组。
根据SQLite站点上的此问题报告,事实证明,SQLite团队认为这是提供者中的一个bug,他们正在1.0.95.0版中对其进行修复。我不知道什么时候会发布,但至少他们认识到这是一个问题,并将修复它。
发布于 2015-07-07 22:35:10
这似乎是在1.0.95中解决的,但在1.0.97中又被打破了。解决方案是将连接字符串上的BinaryGUID属性设置为true,并设置以下环境变量(在建立连接之前)
Environment.SetEnvironmentVariable("AppendManifestToken_SQLiteProviderManifest",“;BinaryGUID=True;”;
数据Source=c:\mydb.db;Version=3;BinaryGUID=True;
https://stackoverflow.com/questions/27279177
复制相似问题