0

私はこれを使い始めましたが、AnyandAllはLinqToSQlでReflectionProviderを使用していませんでした。そして、次のエラーで失敗します。これを修正する方法のポインタ。

Unhandled Exception: System.Data.Services.Client.DataServiceQueryException: An error occurred while processing this request. —> System.Data.Services
 .Client.DataServiceClientException: **An error occurred while processing this request.Argument type
 s do not matchSystem.ArgumentException at System.Linq.Expressions.Expression.Condition(Expression test**, Expressio
 n ifTrue, Expression ifFalse) 
4

1 に答える 1

0

NHibernate(Re-linqをQueryProviderとして使用)でWCF Data Services V5を使用しているときに、同じ問題が発生しました。次のLINQクエリをNHibernateセッションに対して直接実行するか、データサービスクライアントに対して実行するかによって、異なる式が生成されることがわかりました。

.Where(x => x.Staff.Any(y => y.FirstName == "Bill"))

セッションに対してクエリを実行すると、次の式が生成されます。

{value(NHibernate.Linq.NhQueryable`1[WcfDataServicesTest.Entities.Store]).Where(x => x.Staff.Any(y =    > (y.FirstName == "Bill")))}

しかし、クライアントにクエリを実行すると、次のようになります。

{value(NHibernate.Linq.NhQueryable`1[WcfDataServicesTest.Entities.Store]).Where(it => IIF((it.Staff == null), Empty(), it.Staff).Any(p => (p.FirstName == "Bill")))}

追加の条件式(IIF ...)に注意してください。

理由はまだわかりませんが、次のようになるまで使用するための適切な回避策を見つけました。

http://abilityforge.com/?p=18

編集:ここに問題と思われるもの(およびそれに対するより良い解決策)の詳細な説明があります:http://blog.davidebbo.com/2011/08/how-odata-quirk-killed-nuget-server.html

于 2012-11-23T07:47:22.057 に答える