如何在EFCore中更改表达式DateTime

时间:2019-02-26 08:33:03

标签: .net-core entity-framework-core

我使用EFCore搜索数据库。

当TValue == DateTime时,它不运行。

        /// <summary>
        /// 大于或等于
        /// </summary>
        /// <param name="propertyName"></param>
        /// <param name="value"></param>
        public void GreaterThanOrEqual<TValue>(string propertyName, TValue value)
        {
            var prop = type.GetProperty(propertyName);
            Expression left = Expression.Property(param, prop);
            Expression right = Expression.Constant(value, prop.PropertyType);
            Expression result = Expression.GreaterThanOrEqual(left, right);
            filter = Expression.And(filter, result);
        }

我看到控制台了,sql是

 SELECT COUNT(*)
      FROM [tOrganization] AS [item]
      WHERE (1 & CASE
          WHEN [item].[CreateTime] >= '2013-02-26T00:00:00.0000000'
          THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT)
      END) = 1

但是名为CreateTime的列是datetime,而不是datetime2。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

db实体属性需要添加[Column(TypeName =“ datetime”)]属性。 db实体属性(例如money,decimal(18,15))也需要添加此属性。