C# System.Data.Sqlite 1.0.99 guid比较不';行不通

C# System.Data.Sqlite 1.0.99 guid比较不';行不通,c#,entity-framework,sqlite,guid,C#,Entity Framework,Sqlite,Guid,我使用的是C#中的System.Data.Sqlite 1.0.99,通过它,您可以使用EF调用db。当通过Guid选择FirstOrDefault时,我遇到了一个问题,它返回null(但数据库中存在具有该Guid的行): 发现一些信息表明这是已知问题,在1.0.95中已修复,但在1.0.97和接下来的两个解决方案中再次出现问题: 解决方案1:将连接字符串的BinaryGUID属性设置为true: Data Source=...;BinaryGUID=True; 解决方案2:设置下一个环境变量

我使用的是C#中的System.Data.Sqlite 1.0.99,通过它,您可以使用EF调用db。当通过
Guid
选择
FirstOrDefault
时,我遇到了一个问题,它返回
null
(但数据库中存在具有该Guid的行):

发现一些信息表明这是已知问题,在1.0.95中已修复,但在1.0.97和接下来的两个解决方案中再次出现问题:

解决方案1:将连接字符串的BinaryGUID属性设置为true:

Data Source=...;BinaryGUID=True;
解决方案2:设置下一个环境变量(在建立连接之前):

解决方案2可行,因为(来自sqlite站点):

AppendManifestToken\u SQLiteProviderManifest-如果此环境变量设置为[任何值],则System.Data.SQLite.Linq.SQLiteProviderManifest类(以及System.Data.SQLite.EF6.SQLiteProviderManifest类)将使用它通过将环境变量的值附加到现有的提供者清单标记(如果有)来修改未来的提供者清单标记。通常,为了使构造的提供者清单令牌语法正确,环境变量值[要追加]必须以分号开头

解决方案1对我不起作用,因为据我所知,它只对System.Data.SQLite.Linq.SQLiteProviderManifest有效


问题:是否有解决方案来修复此行为而不设置环境变量?

是否尝试使用SingleorDefault而不是FirstorDefault?


示例:var user=context.Users.SingleorDefault(x=>x.Id==userId)

我确认System.Data.SQLite v1.0.104.0仍然存在此问题。解决方案1不起作用,而解决方案2起作用。在我的实体对象上的分部类的构造函数中添加这一行确实有效,谢谢!如果你确实找到了另一个解决方案,请发帖,但现在已经足够了。我很高兴我的问题/解决方案对你有所帮助。谢谢你的回复!
Data Source=...;BinaryGUID=True;
   Environment.SetEnvironmentVariable("AppendManifestToken_SQLiteProviderManifest", ";BinaryGUID=True;");