2011-12-12 34 views
0

我有局部类TaxReportItem与分部方法OnActualVolumeChanging(双值):查询在EntityObject

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

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

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

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