【问题标题】: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 中编写整个查询或创建视图?

【问题讨论】:

    标签: c# sql-server entity-framework


    【解决方案1】:

    你可以使用模型构建器

    modelBuilder.Entity<YourEntity>()
        .Property(p => p.OrderEntryTimeUtc)
        .HasColumnType("datetime2")
        .HasPrecision(0);
    

    【讨论】:

    • 你试过了吗?它不会改变查询参数的精度。
    • @Massanu:不幸的是,这不会改变查询,只会改变列。但如果这样做会更有意义。
    猜你喜欢
    • 2011-07-24
    • 1970-01-01
    • 2021-12-25
    • 2013-03-17
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多