私はViewModelで次の呼び出しを行います。リポジトリメソッドに渡された式が正しくコンパイルされない
Order order= await DataService.Orders.GetAsync(p => p.Id == Guid.Parse("07fafcd9-10db-e511-848d-005056b94716"));
受注リポジトリには次のメソッドがあります。
public async Task<T> GetAsync(Expression<Func<T, bool>> predicate)
{
return await Db.FindAsync<T>(predicate).ConfigureAwait(false);
}
Db
プロパティは、タイプSQLiteAsyncConnection
です。上記で提供した述語は、以下の表現に変換されます。 、だから私は存在しないダウンGuid.Parse
機能を渡している
を解析しません:
{p => (p.Id == Parse("07fafcd9-10db-e511-848d-005056b94716"))}
上記述語はそのような機能は、次のメッセージ
で例外がスローされます私が次の述語を持っていれば同様の例外がスローされます。
Order order= await DataService.Orders.GetAsync(p => p.Id == anotherInstanceObject.Id);
解決策は、コードを実際の値に置き換えることです。
Guid guid = Guid.Parse("07fafcd9-10db-e511-848d-005056b94716"); Order order= await DataService.Orders.GetAsync(p => p.Id == guid);
しかし、上記のようにカウンター直感的で、開発者が
DataService
クラスを使用して開始します多くの問題を紹介します。データアクセスにSQLite.Net-PCLを使用しています。
述語が正しく私のリポジトリメソッドにコンパイルされるようにするために、何が欠けていますか?
データアクセスにローカルでhttps://github.com/oysteinkrog/SQLite.Net-PCLを使用しています。私はそれを使って生きる必要はないと思っていましたが、私は自分のプロキシLINQプロバイダーを作成する方法を研究するためにどこからリンクを張ることができますか? –
Google for "LINQ provider" ...あなたはおそらくそのアプローチに納得しないでしょう。ロケット科学です。私はたくさんのことをする洗練されたものを書いたので分かります。なぜあなたはこのややエキゾチックなLinqプロバイダを使用していますか?私は主流のEFを最初に試してみよう。このようなニッチ・フレームワークをコア・インフラストラクチャーに使用することは、置き換えが難しいという疑問のある戦略です。 – usr
私はEFを使用することはできません、クロスプラットフォームソリューションをサポートする必要があり、sqlite-net-pclは方法です。 –