1

アプリケーションで ADO.NET Data Services のクエリ インターセプターを使用して、ユーザーがアクセスできるデータに基づいて各エンティティの結果セットをフィルター処理しています。ただし、クエリ インターセプターの 1 つから次の例外がスローされます。

内部 .NET Framework データ プロバイダー エラー 1004、0、関連エンティティは、エンティティ セットのクエリ マッピング ビューの一部ではないエンティティ コンストラクターには指定できません。

いつ/なぜこの例外がスローされるのですか?

この投稿にコンテキストを追加するために、URL で次のフィルター基準を使用しています。

$filter=(OnlineItems/Products/ProductId eq 856)

クエリインターセプターは次のとおりです。

        [QueryInterceptor("OnlineItems")]
        public Expression<Func<OnlineItems, bool>> QueryOnlineItems()
        {
            return item => (item.Products.Any(p => p.Price > 10));
        }

暗闇の中での刺し傷として、製品のフィルタリングと製品の拡張の組み合わせになると思いますが、これがどのように全体を崩壊させるのかわかりません。

4

2 に答える 2

1

何らかの理由でこれは機能します:

[QueryInterceptor("OnlineItems")]
public Expression<Func<OnlineItems, bool>> QueryOnlineItems()
{
    return item => (item.Products.Count(p => p.Price > 10) > 0);
}

「Any」の場合ではなく、なぜこれが機能するのか誰かが知っていますか?

于 2009-04-20T07:46:08.367 に答える
0

EF CTP5 にはまだこのバグがあります。とにかく、今のところ簡単な回避策があります

[QueryInterceptor("OnlineItems")]
public Expression<Func<OnlineItems, bool>> QueryOnlineItems()
{
    return item => item.Products.FirstOrDefault(p => p.Price > 10) != null;
}

詳細はこちら: http://social.msdn.microsoft.com/Forums/en/adodotnetdataservices/thread/b5c49e69-3b5f-4606-8b40-4025dc8e5cb1?prof=required

Count() はパフォーマンスに関して完全にゴミであることに注意してください!

于 2010-12-16T00:00:26.577 に答える