在EntityObject中查询

时间:2011-12-12 13:12:48

标签: entity-framework

我有部分类TaxReportItem和部分方法OnActualVolumeChanging(double value):

public partial class TaxReportItem 
{
      partial void OnActualVolumeChanging(double value)
     {
        if (Tax != null)
        {
            Payment = value*Tax.TaxRate;
        }
    }
}

在这个方法中,我想得到上下文中存在的所有TaxReportItems集合(如下所示):

  partial void OnActualVolumeChanging(double value)
    {
        var sum = 0.0;
        if (Tax != null)
        {
            Payment = value*Tax.TaxRate;

            foreach (var taxReportItem in ????)
            {
                sum += taxReportItem.Sum;
            }
        }
    }

我怎样才能实现这个目标?

1 个答案:

答案 0 :(得分:1)

这实际上很难,因为你永远不需要这个。如果你需要这个,你的实体对象的设计是错误的,它正在做一些应该在其他地方完成的事情。单TaxReportItem应该永远不需要知道其他税务报表项并从数据库加载它们,除非其他项依赖于此项(它们形成聚合)。在这种情况下,您应该具有导航属性到主体中的依赖项。

关注你的问题。如果您需要加载其他项目,则必须具有上下文实例才能执行此操作。您可以获取instance used to load current item并使用它来加载其他实体(错误的解决方案),或者您可以创建上下文的新实例并使用它来加载其他实体(甚至更糟的解决方案)。

从链接文章中可以看出,从实体本身获取当前上下文实例并不容易,并且它有一些先决条件可以追溯到第一段。这很难,因为这是错误的方法。