将AutoMapper与Xamarin Sqlite一起使用时找不到ToList方法

时间:2016-09-13 17:49:00

标签: c# sqlite xamarin.forms automapper

我正在尝试将AutoMapper的投影方法与Xamarin Sqlite一起使用。我的代码如下:

var myList = conn.Table<SomeTable>()
    .Where(w => w.ForeignKeyId == foreignKeyId)
    .AsQueryable()
    .ProjectTo<SomeTableDto>()
    .ToList();

该代码适用于Android模拟器,但在iOS模拟器上失败。 iOS上的错误是:

System.NotImplementedException: The method or operation is not implemented.

堆栈跟踪的顶部位于下方。如果需要,我可以提供完整的堆栈跟踪,这很长。

at Microsoft.Scripting.Interpreter.LightCompiler.CompileMemberInitExpression     (System.Linq.Expressions.Expression expr) [0x00000] in     /Users/builder/data/lanes/3539/f37444ae/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/dlr/Runtime/Microsoft.Dynamic/Interpreter/LightCompiler.cs:1532  
at Microsoft.Scripting.Interpreter.LightCompiler.CompileNoLabelPush (System.Linq.Expressions.Expression expr) [0x002a7] in /Users/builder/data/lanes/3539/f37444ae/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/dlr/Runtime/Microsoft.Dynamic/Interpreter/LightCompiler.cs:1660

找不到的方法是ToList()调用。为什么在iOS上找不到该方法?

我通过执行以下操作解决了问题,但我很好奇为什么我的初始代码无法在iOS上运行。

var someTableList = conn.Table<SomeTable>()
    .Where(w => w.ForeignKeyId == foreignKeyId)
    .ToList();

var myDtoList = Mapper.Map<List<SomeTableDto>>(someTableList);

我正在使用AutoMapper 5.1.1,Xamarin Forms 2.3.1和Sqlite-net-pcl 1.1.2。

1 个答案:

答案 0 :(得分:1)

我很确定问题是iOS链接器。我发现了类似的问题:

https://github.com/AutoMapper/AutoMapper/issues/1542

https://github.com/AutoMapper/AutoMapper/issues/686

感谢@Krumelur将我指向了iOS链接器的方向。如果有人能想到其他任何事情,请告诉我。