代码之家  ›  专栏  ›  技术社区  ›  Felix

EF 2.1中的播种日期

  •  3
  • Felix  · 技术社区  · 6 年前

    我正在实体框架2.1中使用新的播种数据方式:

    modelBuilder.Entity<Blog>().HasData(new Blog {BlogId = 1, CreateDate = DateTime.Now});
    

    但是,将其应用于数据库会引发异常 Conversion failed when converting date and/or time from character string 。我可以看到,在生成的SQL中,值如下所示 '2018-06-01T13:22:13.248-07:00' 这是错误的。由于现场显然 DateTime ,我无法按我希望的方式将其格式化为字符串。

    这是EF中的一个bug吗?或者我错过了一些明显的东西?在 传统的 EF代码工作正常:

    Blog.CreateDate = DateTime.Now;
    ...
    context.SaveChanges();
    

    或者,SQL方面可能有一些变通方法,允许它以这种格式记录日期?

    2 回复  |  直到 6 年前
        1
  •  0
  •   jan-marten    6 年前

    问题1这里是转换失败。这可以通过将列转换为DateTime2来解决。 参考: Seeding DateTime in EF 2.1 throws exception #12211

    第2期(DateTime.Now成为固定日期/时间)也是我关注的问题。

        2
  •  0
  •   Foy    6 年前

    使用{[列(TypeName=“datetime”)]注释

    public class Blog
    {[Column(TypeName = "datetime")]
    public DateTime CreateDate { get; set; }