![](/img/trans.png)
[英]System.Data.Sqlite: Cache Size=… connections string parameter doesn't seem to work
[英]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.