7

我的一个实体类可以作为 BIGINT 存储在 sql server 数据库中。我的问题是:如何获取实体框架上下文以了解如何存储和检索实体类的实例?

更多详情。我正在使用Noda Time,它可以表示比 SQL 或 .NET datetime 更广泛的日期范围(而且它是甜点浇头)。我的实体类 Happening 是 NodaTime 的 Instant 类的包装器。我可以使用 .SetFromLong(long instant) 和 .ToLong() 之类的方法从一个长事件中设置一个事件,并从事件中得到一个长事件。

目前我的模型正在工作,保存包含点网 DateTime 类型属性的类。相反,如果我想使用自定义类型“正在发生”的属性,我该如何告诉实体框架如何保存这些属性?

如果我正在阅读这篇关于建模和映射的文章,我是走在正确的轨道上还是错过了一些更简单的东西?

http://msdn.microsoft.com/en-us/library/bb896343.aspx

我正在使用实体框架 4。

4

1 回答 1

7

我建议做的是在您的实体上添加 2 个属性 NodaTime 和 long,并在您的 EF 模型中使用 [NotMapped] 排除您的 NodaTime 属性,然后在您的 getter/setter 中更新 long。

IE

public class MyEntity{
   public long TimeAsLong{get;set;}
   [NotMapped]
   public Happening {
      get{
        return new Happening().SetFromLong(TimeAsLong);
      }
      set {
         TimeAsLong = value.ToLong();
      }
   }
}

这样做的效果是 long 存储在数据库中,但您可以通过 NodaTime 在类上访问它

于 2012-02-26T09:11:15.110 回答