如何告诉实体框架如何保存自定义类型的实例(可以存储为标量)

时间:2012-02-26 06:07:19

标签: entity-framework nodatime

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

更多细节。我正在使用Noda Time,它可以表示更广泛的范围 日期比SQL或.NET datetime(并且它是甜点顶部)。我的实体类,Happening,是NodaTime的包装器 即时课程。我可以设置一个长时间的发生,并从中得到一个长期 使用.SetFromLong(long instant)和.ToLong()等方法。

目前我正在使用我的模型,保存包含的类 点网日期时间类型的属性。如果相反,我想使用属性 我的自定义类型“Happening”,如何告诉Entity Framework如何保存这些?

如果我正在阅读这篇关于建模和制图的文章 正确的轨道还是错过了更简单的东西?

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

我正在使用实体框架4.

1 个答案:

答案 0 :(得分:7)

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

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

这样做的结果是long存储在db中,但你可以通过NodaTime在类上访问它