0

外部キー関係によってリンクされている2つのオブジェクトがあり、DataModelを使用してオブジェクトをマップします。

イベント:1 ------ *:アセット

特定の[eventPublicId]のすべてのアセットをフェッチするクエリを作成しました

List<Asset> assetList =
    ReliableExecution.RetryWithExpression<Event, List<Asset>>
    (u => u.FirstOrDefault(x => x.PublicId == eventPublicId).Assets.ToList()).ToList();

私の問題は、ToList()を2回呼び出す必要があり、これが厄介に見えることです。また、FirstOrDefaultを使用する必要がありましたが、[Where]などを使用しようとすると、コンパイルされませんでした。

このコードを書き直す方法は他にありますか?

これは、参照用のRetryWithExpression署名です。

public static TValue RetryWithExpression<T, TValue>(Func<ObjectSet<T>, TValue> func, Int32 retryInfiniteLoopGuard = 0)
         where T : class
4

1 に答える 1

1

funcパラメータがを返すように指定しているList<Asset>ため、ナビゲーションプロパティevent.Assetsは請求書に適合しません。これはEntityCollection<Asset>デリゲートリターンタイプに暗黙的に変換できないです。明示的な変換により、指定されたToList()タイプが作成されます。

技術的には、ToListを削除するには、次を使用する必要があります

ReliableExecution.RetryWithExpression<Event, EntityCollection<Asset>> ...

しかし、それがあなたの機能要件を満たしているかどうかはわかりません。

于 2012-04-29T20:45:00.477 に答える