美文网首页
在.NET中使用Sqlite与Entity Framework时

在.NET中使用Sqlite与Entity Framework时

作者: 达哥傻乐 | 来源:发表于2023-12-12 16:33 被阅读0次

    Sqlite不支持datetime类型的数据,我们一般用Text来存储这个数据类型,在编程的时候感觉颇为不便,经研究可以通过下面的步骤让它运行日期类型。

    1. 在使用Scaffold-DbContext命令在项目中生成了Sqlite数据库上下文和模型后,对数据库的上下文文件里的OnModelCreating进行改进如下,要点在最后面的6行:
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<SqliteBlockedIp>(entity =>
            {
                entity.ToTable("SqliteBlockedIP");
    
                entity.HasIndex(e => e.Id, "Index_ID").IsUnique();
    
                entity.Property(e => e.Id).HasColumnName("ID");
                entity.Property(e => e.Ipaddress).HasColumnName("IPAddress");
    
                //added by Darwin Zuo for DateTime conversion专为数据转换而添加
                entity.Property(e => e.BlockedTime).HasConversion
                (
                    v => v.ToString("yyyy-MM-dd HH:mm:ss"), // 从DateTime到string的转换
                    v => DateTime.ParseExact(v, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture) // 从string到DateTime的转换
               );
            });
        
              ......
      }
    
    1. 找到模型文件的对应字段的属性,我这里是BlockedTime,它原来是如下这样的
      public string BlockedTime { get; set; } = null!;
      把它改成这样:
      public DateTime BlockedTime { get; set; } = DateTime.MinValue!;
      然后编译程序 ,属性BlockedTime就直接成为DateTime类型了。

    注意:以上内容在使用Scaffold-DbContext刷新上下文和模型后,需要再次添加和修改!!

    相关文章

      网友评论

          本文标题:在.NET中使用Sqlite与Entity Framework时

          本文链接:https://www.haomeiwen.com/subject/eubvgdtx.html