簡體   English   中英

System.Data.Sqlite 1.0.99 guid比較不起作用

[英]System.Data.Sqlite 1.0.99 guid comparison doesn't work

我正在使用C#的System.Data.Sqlite 1.0.99,你可以用EF調用db。 我在Guid選擇FirstOrDefault時遇到了問題,它返回null (但是數據庫中存在這樣的guid行):

var user = context.Users.FirstOrDefault(x => x.Id == userId); //returns null
//or
var user = context.Users.Where(x => x.Id == userId).ToArray(); //returns empty array

找到一些已知問題的信息,它已在1.0.95修復,但在1.0.97和下兩個解決方案中又被破壞:

解決方案1:將連接字符串上的BinaryGUID屬性設置為true:

Data Source=...;BinaryGUID=True;

解決方案2:設置下一個環境變量(在建立連接之前):

   Environment.SetEnvironmentVariable("AppendManifestToken_SQLiteProviderManifest", ";BinaryGUID=True;");

解決方案2有效,因為(來自sqlite站點):

AppendManifestToken_SQLiteProviderManifest - 如果將此環境變量設置為[to anything], System.Data.SQLite.Linq.SQLiteProviderManifest類(以及System.Data.SQLite.EF6.SQLiteProviderManifest類)將使用它來修改將來的提供程序清單標記。將環境變量的值附加到現有提供程序清單標記(如果有)。 通常,為了使構造的提供者清單標記在語法上正確,環境變量值[要附加]必須以分號開頭。

解決方案1對我不起作用,因為據我所知,它僅對System.Data.SQLite.Linq.SQLiteProviderManifest有影響。

問題:是否有任何解決方案可以解決此問題而不是設置環境變量?

你會嘗試使用SingleorDefault而不是FirstorDefault嗎? LINQ:何時使用SingleOrDefault與FirstOrDefault()一起使用過濾條件

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM