如何解决Xamarin 无法编译:参数 System.Collections.Generic.List`1[T] queryArgs
我已经安装了 sqlite-net-pcl 1.7.335
和 sqliteNetExtensions 2.0.0
报错过程如下:
dataService.InsertOrUpdate<PointOfSaleDTODBModel>(nuevoRegistro);
我的模型 PointOfSaleDTODBModel:
public T InsertOrUpdate<T>(T model) where T : class,new()
{
try
{
var oldRecord = DataAccess.GetInstance().Find<T>(model.GetHashCode(),false);
if (oldRecord != null)
{
DataAccess.GetInstance().Update(model);
}
else
{
DataAccess.GetInstance().Insert(model);
}
return model;
}
catch (Exception ex)
{
ex.ToString();
return model;
}
}
这一步是我遇到问题的地方
public T Find<T>(int pk,bool WithChildren) where T : class,new()
{
return connection.Table<T>().FirstOrDefault(n => n.GetHashCode() == pk);
}
错误文本:
- “无法编译:参数”
-
at sqlite.TableQuery
1[T].CompileExpr (System.Linq.Expressions.Expression expr,System.Collections.Generic.List1[T] queryArgs) [0x00b16] in <d1788edcec634c19b907698bb77ed371>:0 \n at sqlite.TableQuery
1[T].CompileExpr (System.Linq.Expressions.Expression expr,System.Collections.Generic.List1[T] queryArgs) [0x001fb] in <d1788edcec634c19b907698bb77ed371>:0 \n at sqlite.TableQuery
1[T].CompileExpr (System.Linq.Expressions.Expression expr,System.Collections.Generic.List1[T] queryArgs) [0x0009d] in <d1788edcec634c19b907698bb77ed371>:0 \n at sqlite.TableQuery
1[T].GenerateCommand (System .String selectionList) [0x0005f] in :0 \n at sqlite.TableQuery1[T].ToList () [0x00000] in <d1788edcec634c19b907698bb77ed371>:0 \n at sqlite.TableQuery
1[T].FirstOrDefault () [0x00007] in :0 \n at sqlite.TableQuery1[T].FirstOrDefault (System.Linq.Expressions.Expression
1[TDelegate] predExpr) [0x00007] in :0 \n at IDS.Helpers.DataAccess.Find[T] (system.int32 pk,System.Boolean WithChildren) [0x0000e] in /Users/ingeneo/Documents/workspace/Xamarin/dms-mobile /dms-xamarin/IDS-only-login/IDS/Helpers/DataAccess.cs:120 \n 在 IDS.Services.DataService.InsertOrUpdate[T](T 模型)[0x00002] 在 /Users/ingeneo/Documents/workspace/ Xamarin/dms-mobile/dms-xamarin/IDS-only-login/IDS/Services/DataService.cs:54`
任何帮助,谢谢
解决方法
这里有一些对你的代码的建议,它可能会解决问题。
-
使用
SQLiteAsyncConnection
而不是SQLiteConnection
,refer to official docs 。 -
使用
Id
而不是HashCode
来获取数据。Database.Table<TodoItem>().Where(i => i.ID == id).FirstOrDefaultAsync();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。