2016-09-13 6 views
1

私はXamarin SqliteでAutoMapperの投影法を使用しようとしています。私のコードは次のようになります:Xamarin SqliteでAutoMapperを使用するとToListメソッドが見つかりません

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

NugetパッケージをForms PCL *および* iOSプロジェクトに追加しましたか?それらは両方で必要です。 – Krumelur

+0

私はAutoMapperを自分のPCLプロジェクトだけ追加しました。ドロイドやiOSプロジェクトには追加されません。私がAutoMapperをiOSに追加するときは、依存関係が30以上あるリストもインストールする必要がありますので、私はそれをすることを躊躇しています。上記のサンプルコードはすべて私のPCLプロジェクトにあります。 –

+0

問題があります。パッケージをネイティブプロジェクトに追加する必要があります。どうやって30の依存関係が導入されるのかわかりません。 – Krumelur

答えて

関連する問題