English 中文(简体)
Linq 2 Sql实体的不动产自动计算?
原标题:Automatically Calculated Properties in Linq 2 Sql Entities?
  • 时间:2009-10-10 07:39:04
  •  标签:

请允许我说,我的数据库有一个称为命令的表格,其栏目如下:

OrderId OrderDate CancelDate ShipDate LastActionDate

我希望,“持久行动”永远是“秩序、和解与船舶”的最新日期。 实现这一目标的最佳途径是什么? 是否有办法处理这3个日期的“OnChanged”事件,以便在这些财产发生变化时,能够重新计算“最后行动”。 或者,有一部分已建的Linq 2 Sql magic可以处理这种情况? 或者,在我改变三个日期时,我是否必须确保确定最后行动?

最佳回答

在您的Linq-to-SQL模式中,每个实体的每个财产都有一个部分方法,称为“(财产名称)”。

部分方法是C# 3.0的新特征——它们重新定义了方法,但不一定实际执行。 如果他们没有执行,那么在你建造过程中的连接阶段,将取消对他们的任何呼吁。

然而,如果你确实提供了执行,那么执行的确是呼吁的。 由于贵实体的班级如<代码>Order是部分班级,你可以轻松地创建自己的部分班级,并界定这些方法。

因此,请参看<编码>OrderDateChanged(),CancelDateChanged(ShipDateChanged(

根据这些方法,你可以很容易地采用一种名为<代码>的计算法()的方法,根据需要计算你的新的日期。 可能比较容易。

public partial class Order
{
   void OrderDateChanged()
   {
       CalculateLastActionDate();
   }

   ......

   private void CalculateLastActionDate()
   {
      ... your implementation here
   }

}

页: 1

问题回答

如果你想要计算“最后行动”,你就应该把它作为贵国数据库的一个栏目。

假设该栏不列入数据库,也不应成为自动生成的L2S代码的一部分。 这样做是好的,因为这意味着你可以加起来,因为汽车产生的L2S级是部分课。

添加新的C#代码,并申报订单类别,其签名与汽车制造的订单类别完全相同,并加上你计算的财产。 与此类似:

public partial class Order
{
    public DateTime LastActionDate
    {
        get
        {
            // pick the desired value from the other
            // three properties and return it
        }
    }
}

页: 1





相关问题
热门标签