我有一个值
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
。 :|
如何在实体框架中首先生成代码生成类型为datetime2的列而不是迁移中的datetime?
答案 0 :(得分:4)
如何在实体框架中首先生成代码,在迁移中生成
datetime2
类型而不是datetime
的列?
要指定要使用的列的类型,可以将以下属性添加到模型的属性ChangedOn
中:
[Column(TypeName = "datetime2")]
或者如果您使用的是Fluent API,则可以将其添加到OnModelCreating
的{{1}}中:
DBContext
答案 1 :(得分:0)
<强>解强>
1)添加类型为long的字段ChangedOn2。
2)将dt.Ticks值保存到ChangedOn2。
3)与
比较someEntity.ChangedOn2.Equals(dt.Ticks);