即使像
这样的简单查询EmmaDatabase.EmmaDB ec = DatabaseProvider.GetEmmaDatabase();
var changes = (from o in ec.dbCachedChanges
select o);
在迭代时抛出一个ArgumentException(参数类型不匹配)。 Stacktrace只包含
at System.Linq.Expressions.Expression.Bind(MemberInfo member, Expression expression)
这完全没有帮助我。我不知道为什么会造成这种情况,在这里找不到任何东西,也不会用谷歌搜索。
编辑:异常根本不会改变结果,例外只是吃饭时间。
有人能帮助我吗?
答案 0 :(得分:2)
解决了,不是破坏者,只是例外编码。
Subsonic.Core.Linq.Structures.QueryMapping.cs:155
if (me != null)
{
try {
bindings.Add(Expression.Bind(mi, me));
} catch {
//this is only here until I rewrite this whole thing
}
}
可以通过
解决if (me != null)
{
try {
if (mi is PropertyInfo && ((PropertyInfo)mi).PropertyType.IsAssignableFrom(me.Type))
bindings.Add(Expression.Bind(mi, me));
else if (mi is FieldInfo && ((FieldInfo)mi).FieldType.IsAssignableFrom(me.Type))
bindings.Add(Expression.Bind(mi, me));
} catch {
//this is only here until I rewrite this whole thing
}
}
因为QueryMapper.GetMappedMembers()返回一个只包含PropertyInfos和FieldInfos的列表。