如何向 linq2Sql ORM 添加属性 Table

How to add properties to linq2Sql ORM Table

在我的 SQL table 中,我有两个属性,StartDateTime 和 EndDateTime,在我的代码中,我有 Linq2Sql ORM table,它映射了相应的 StartDateTime 和 EndDateTime。我决定这样添加持续时间:

public TimeSpan Duration
{
   get
   {
      TimeSpan ts =(TimeSpan) (EndDateTime - StartDateTime);
      return ts;
   }
}

这行得通,但是当我通过设计器修改我的 dbml 文件时,添加的内容当然会随着文件被重写而消失。 我的问题是添加持续时间 属性 的最佳做法是什么,我真的不想将它添加到源 SQL Table 中,因为将它放在那里似乎是多余的。

更新: 因为创建的 ORM table 被定义为 "public partial class" 我创建了一个额外的代码文件来保留我的 class 添加,例如在添加 属性 [=19= 的情况下].

实体 class 是部分 class。 因此,您可以将 属性 放在一个单独的文件中,其中包含:

public partial class MyEntity
{
    public TimeSpan Duration
    {
        get
        {
            TimeSpan ts =(TimeSpan) (EndDateTime - StartDateTime);
            return ts;
        }
    }
}

不要修改自动生成的文件,将一个新文件添加到您的项目中,其中包含 class

的部分定义
// File : MyTableClass_Extend.cs

public partial class MyTableClass
{
    public TimeSpan Duration
    {
       get
       {
          TimeSpan ts =(TimeSpan) (EndDateTime - StartDateTime);
          return ts;
       }
    }
}

您可以使用以下方法进行操作:

TimeSpan 持续时间 = _MyEndDataTime.Subtract(_MyStartDateTime);

但请记住,TimeSpan 最多只能保持 11:59:59 (hh:mm:ss) 的时间,因此如果 StartDateTime 和 EndDateTime 超过 24 小时,您将被卡住,所以我建议使用 DataTime 来获取持续时间而不是 TimeSpan。