实体框架 - 查询精度
Posted
技术标签:
【中文标题】实体框架 - 查询精度【英文标题】:Entity Framework - Precision in queries 【发布时间】:2016-09-20 06:58:39 【问题描述】:与这个问题非常相似:Why is Entity Framework passing a parameter as DECIMAL(5,0) for a column defined with NUMERIC(19)?
但是,给出的答案似乎与我的结果不一致。
我有一个列OrderEntryTimeUtc datetime2(0)
,在该列上对表进行了分区。现在,为了实际使用分区,我需要我的查询使用相同的类型和精度。
但是当我创建我的 where 子句时:
o.OrderEntryTimeUtc > dateStart
其中 dateStart 是一个日期时间,毫秒部分设置为 0,我得到以下生成的参数:
@p__linq__2 datetime2(7)
@p__linq__2='2016-05-21 23:44:33'
如何强制 EF 发送datetime2(0)
?或者如何在查询中添加CONVERT
,而无需在 SQL 中编写整个查询或创建视图?
【问题讨论】:
【参考方案1】:你可以使用模型构建器
modelBuilder.Entity<YourEntity>()
.Property(p => p.OrderEntryTimeUtc)
.HasColumnType("datetime2")
.HasPrecision(0);
【讨论】:
你试过了吗?它不会改变查询参数的精度。 @Massanu:不幸的是,这不会改变查询,只会改变列。但如果这样做会更有意义。以上是关于实体框架 - 查询精度的主要内容,如果未能解决你的问题,请参考以下文章