私は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を使用しています。
NugetパッケージをForms PCL *および* iOSプロジェクトに追加しましたか?それらは両方で必要です。 – Krumelur
私はAutoMapperを自分のPCLプロジェクトだけ追加しました。ドロイドやiOSプロジェクトには追加されません。私がAutoMapperをiOSに追加するときは、依存関係が30以上あるリストもインストールする必要がありますので、私はそれをすることを躊躇しています。上記のサンプルコードはすべて私のPCLプロジェクトにあります。 –
問題があります。パッケージをネイティブプロジェクトに追加する必要があります。どうやって30の依存関係が導入されるのかわかりません。 – Krumelur