0

我有两个通过外键关系链接的对象,我使用 DataModel 来映射对象:

事件:1--------*:资产

我写了一个查询来获取给定 [eventPublicId] 的所有资产

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

我的问题是我不得不调用 ToList() 两次,这看起来很尴尬。我还必须使用 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参数应返回 a List<Asset>,因此导航属性event.Assets不符合要求:它是 an EntityCollection<Asset>不能隐式转换为委托返回类型显式转换ToList()创建指定的类型。

从技术上讲,要摆脱 ToList,您应该使用

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

但我不知道这是否符合您的功能要求。

于 2012-04-29T20:45:00.477 回答