-1

您好我正在尝试通过指定需要包含的元素列表来使用急切加载。这是我写的表达式:

public class Prefetch<TEntity>
{
    private readonly List<LambdaExpression> items = new List<LambdaExpression>();

    public Prefetch<TEntity> Include<TPath>(Expression<Func<TEntity, TPath>> path)
    {
        this.items.Add(path);

            return this;
        }
}

 private static IEnumerable<string> GetCoverPrefetch()
    {

         new Prefetch<ContractCoverInstance>().Include(x => x.Tariff.AksAssumptionData.ToList().ForEach(x => x.MortalityTableMainInsuredMale))
    }

我不确定我所写的内容是否正确,是否会达到我的预期,并且我无法测试应用程序一段时间,因为存在一系列编译错误,因为一些模型更改,需要先纠正应用程序经过测试。

这就是我相信这个表达式会做的事情,如果我错了,请纠正我:

对于列表中的每个元素导致 AksAssumptionData 获取 MortalityTableMainInsuredMale 并包含它

如果这不正确,那么我如何才能实现我刚才在 lambda 表达式中所说的内容?

4

1 回答 1

0
  1. items应该是一个TEntity......为什么你会有一个 lambda 表达式的列表?
  2. 在我看来,您正在使用 Include 就好像它是一个单例......这不是一个好的设计。
  3. GetCoverPrefetch应该根据签名返回一个IEnumerable<string>,但是您希望字符串包含什么?您没有从函数返回字符串。你只是ForEach用来什么都不做 - 它会给你一个编译错误。您应该使用普通的foreach和使用yield return,或者只是return new Prefetch<ContractCoverInstance>().Include(...)但 Include 返回的不是一个IEnumerable<string>,而是一个List<LambdaExpression>
  4. 这没有任何意义。即使您itemsGetCoverPrefetch()正确返回,它也只会包含您传入的 lambda 表达式。所以它什么也不做。
于 2013-04-30T11:16:51.963 回答