美文网首页
在.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