之前ef framework有sqlquery可以直接使用this._dbContext.SqlQuery<DateTime>("Select sysdate from dual");进行数据库时间的查询。但是ef core下没有针对database的sqlquery方法。只要有针对单dbset的fromsqlRaw,这种就不适用dual的内存表了。
目前针对ef core查询时间的办法如下:
using (var connection = this._messfContext.Database.GetDbConnection())
if (connection.State == System.Data.ConnectionState.Closed)
await connection.OpenAsync(cancellationToken);
using (var command = connection.CreateCommand())
command.CommandText = "SELECT SYSDATE FROM DUAL";
return (DateTime)await command.ExecuteScalarAsync(cancellationToken);
首先关注此System.Data.Entity.DbFunctions类,是EF的时间处理类,很多实用方法
此类在程序集 EntityFramework, Version=6.0.0.0里面
此类的微软api文档:
https://docs.microsoft.com/zh-cn/dotnet/api/system.data.entity.dbfunctions?view=entity-fr...
EF Core使用Linq进行数据查询。
基本查询
微软提供了一百多个示例来演示查询,地址:https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b
我们可以通过下面的代码进行简单的查询:
//获取全部数据
var blogs = context.Blogs.ToList();
//获取单个实体
var blog = conte...
在EF5中 查找30天内的
List<ActualData> actualData = new List<ActualData>();
actualData = db.ActualData.Where(q => System.Data.Objects.EntityFunctions.DiffDays(DateTime.Now, q.InsertTime) < 30).ToList();
foreach
很多人做项目时候当喜欢用DateTime方法来做服务器时间直接写入了数据库,不得不说这是非常错误的,有些用户的电脑自己会把自己的电脑时间改了忘记了改回正确的时间,或者有用户的电脑很老很旧主板的电池已经坏了,每次开机时间都是主板出厂的默认时间,这个时候用DateTime只有给自己和团队添加麻烦,报表永远都不对,所以很有必要所有的时间统一使用服务器的时间。
如果是用ADO.NET就很方便,Sql直接...
由于本地时间和数据库时间可能不一致, 所以我们常常抓取数据库的时间作为我们数据的时间,那在EntityFramework中要如何抓取时间呢?网上常见的做法是利用SqlFunctions.GetDate(),但是该函数必须要放到模型中来执行才可以,代码如下
var now = this.TUser.Select(t => SqlFunctions.Get...
前面试了很多的方法db.Task.Where(m=>m.AssignDate.value.Date == DateTime.Now.Date);结果报错了
不支持指定的类型成员“Date”。只支持初始值设定项、实体成员和实体导航属性。
也用了转字符串的,也是报错的db.Task.Where(m => System.Data.Entity.DbFunctions.DiffDays(m.Assign