我有两个通过外键关系链接的对象,我使用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
答案 0 :(得分:1)
您指定func
参数应返回List<Asset>
,因此导航属性event.Assets
不符合帐单:它是EntityCollection<Asset>
,其中不能隐式转换为委托返回类型。 显式转换ToList()
创建指定的类型。
从技术上讲,要删除ToList,您应该使用
ReliableExecution.RetryWithExpression<Event, EntityCollection<Asset>> ...
但我不知道这是否符合您的功能要求。