siaqodb query:ArgumentException:字段句柄和类型句柄不兼容

时间:2015-01-20 18:13:05

标签: c# linq unity3d

我使用Unity3D中的siaqodb插件来管理我的数据库游戏。

该插件使用System.LINQ库,我遇到了一个特定的问题:

代码:

var query = (from T t in siaqodb where t.Id == 1 select t);
return query.ToList<T> ()[0];

效果很好!没关系!太好了!

但是代码:

int a = 1;
var query = (from T t in siaqodb where t.Id == a select t);
return query.ToList<T> ()[0]

此代码引发异常: ArgumentException:字段句柄和类型句柄不兼容。

2 个答案:

答案 0 :(得分:0)

我刚刚使用以下代码解决了我的问题:

var query = (from T t in siaqodb select t);
return query.ToList<T> ().Where (t => t.Id == id).ToList ()[0];

这不是很漂亮,但我可以避免ArgumentException,我相信它发生在来自siaqodb的Reflection代码......

答案 1 :(得分:0)

我也遇到了这个错误,问题在于,通用类型和Lamda表达式在SQLite中是不兼容的。该表达式使用Generic基本类型或接口,并尝试从DB获取它,但您不存储Base类型或接口,而是存储派生类型。如果使用lambda,则必须使用与DB表匹配的正确类型。