我有一个值(value)

DateTime dt = DateTime.Parse("2015-10-12 14:24:40.582");

我这样做:
SomeEntity someEntity = new SomeEntity()
{
    ID = 1,
    ChangedOn = dt
};
context.SomeEntities.Add(someEntity);

我发现的是:在数据库表中存储的值是“2015-10-12 14:24:40.58 3 0000”

我是用手动找到的
SELECT CONVERT(datetime2, ChangedOn) FROM SomeEnititiesTable WHERE ID=1;

我从数据库加载someEntity并执行
bool ok = someEntity.ChangedOn.Equals(dt);

问题是我希望ok == false时使用ok == true。 :|

如何在 Entity Framework 中首先使代码生成datetime2类型的列,而不是在迁移中使用datetime?

最佳答案



要指定要使用的列的类型,可以将以下属性添加到模型的属性ChangedOn中:

[Column(TypeName = "datetime2")]

或者,如果您使用的是Fluent API,则可以将其添加到OnModelCreatingDBContext中:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

    // ...

    modelBuilder.Entity<someEntity>()
        .Property(p => p.ChangedOn)
        .HasColumnType("datetime2");

    // ...
}

10-05 19:15