EF Core之值转换

EF Core之值转换

有的时候存在数据库里的数据和我们实际应用的是不一样的,以前只能在model里添加一个特殊的字段来手动转化,其实EF Core提供了一种更优雅解决方案—值转换

  • 值转换的应用非常简单,我们这里以TimeSpan数据为例:

    • 如果我们直接存储TimeSpan格式的数据,在SqlServer中是有问题的,这样的情况下,存储的数据只能是24小时以内的,这时候我们就需要存储为bigint类型:

      private readonly ValueConverter timespanConverter = new ValueConverter<TimeSpan, long>(v => v.Ticks, v => new TimeSpan(v));
      
      protected override void OnModelCreating(ModelBuilder modelBuilder)
      {
          modelBuilder.Entity<TableName>().Property(e => e.TimeSpanColumn).HasConversion(timespanConverter);
      }
      
  • 值转换的方案启用后,我们的model内只需要管理需要的数据,数据库里存储的则是对应的数据,EF Core为我们充当转换器的角色。

posted @ 2019-03-16 07:30  shadowxs  阅读(212)  评论(0)    收藏  举报