![](/img/trans.png)
[英]Entity Framework Code First: which DataType attribute for DateTime2?
[英]Code first in entity framework set column to type datetime2 in sql server
我有一个价值
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 == true
时, ok == false
。 :|
如何在实体框架中首先生成代码生成datetime2类型的列而不是迁移中的datetime?
如何在实体框架中首先生成代码生成
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");
// ...
}
解
1)添加类型为long的字段ChangedOn2。
2)将dt.Ticks值保存到ChangedOn2。
3)比较
someEntity.ChangedOn2.Equals(dt.Ticks);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.