我有一个值(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,则可以将其添加到
OnModelCreating
的DBContext
中:protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
// ...
modelBuilder.Entity<someEntity>()
.Property(p => p.ChangedOn)
.HasColumnType("datetime2");
// ...
}