播种日期在EF 2.1中

时间:2018-06-01 22:09:02

标签: sql-server asp.net-core entity-framework-core

我正在使用Entity Framework 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中的错误吗?或者我错过了一些明显的东西?在传统的 EF代码中,它可以正常工作:

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

或许SQL方面有一些解决方法可以让它以这种格式获取日期?

2 个答案:

答案 0 :(得分:0)

使用{[Column(TypeName =“ datetime”)]批注

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

答案 1 :(得分:0)

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

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