首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLite实体框架6提供程序如何处理Guids?

SQLite实体框架6提供程序如何处理Guids?
EN

Stack Overflow用户
提问于 2014-12-03 18:37:56
回答 2查看 5K关注 0票数 13

我正在从另一个支持Guids的产品中将我们产品的数据库移植到SQLite。正如我们所知,SQLite不支持Guids。我已经从我的数据库(首先是数据库)创建了一个实体框架6模型,我需要从C#构建一个查询,将Guid与从代码中传递的查询进行比较。

问题是,我找不到任何关于SQLite实体框架提供程序如何处理Guids的文档。网络搜索也没有发现任何对我有用的东西。关于如何将实体框架与SQLite结合使用的问题。

有人能告诉我文档,或者告诉我如何通过SQLite模型在EF6数据库中使用Guid吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-08 18:37:30

我终于找到了这个问题的答案。

我的问题是,SQLite实体框架6提供程序无法正确地处理将代码中的文字指南转换为SQL的问题。,即窗体的Linq表达式。

代码语言:javascript
复制
context.MyEntity.Where( x => x.GuidColumn == new Guid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx") )

获取将其转换为以下SQL:

代码语言:javascript
复制
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版中对其进行修复。我不知道什么时候会发布,但至少他们认识到这是一个问题,并将修复它。

票数 4
EN

Stack Overflow用户

发布于 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://www.connectionstrings.com/sqlite/

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27279177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档