博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EntityFramework获取数据库的时间
阅读量:6943 次
发布时间:2019-06-27

本文共 1679 字,大约阅读时间需要 5 分钟。

由于本地时间和数据库时间可能不一致, 所以我们常常抓取数据库的时间作为我们数据的时间,那在EntityFramework中要如何抓取时间呢?网上常见的做法是利用SqlFunctions.GetDate(),但是该函数必须要放到模型中来执行才可以,代码如下

var now = this.TUser.Select(t => SqlFunctions.GetDate()).FirstOrDefault();            if (now == null)            {                now = new DateTime(1900, 1, 1, 0, 0, 0);            }            return now.Value;
其中TUser是数据库中的一个表,用其他表也是可以的。一般情况下是没有问题的。但是当用于查询的表,比如这里的TUser中没有任何数据时,返回的时间是空的。为何呢?因为该函数是依赖于select查询行数据,没有任何数据时,自然得不到结果。为此我们采用另外一种方法,直接SELECT GETDATE(),代码如下。

var now = this.Database.SqlQuery
("SELECT GetDate()").First(); if (now == null) { now = new DateTime(1900, 1, 1, 0, 0, 0); } return now.Value;
这样就确保了数据库时间的获取,为了方便使用,我们可以将这段代码封装到XXEntities : DbContext的部分类中。比如

namespace XXModel{    using System;    using System.Data.Entity;    using System.Data.Entity.Infrastructure;    using System.Data.Entity.SqlServer;    using System.Linq;    public partial class XXEntities : DbContext    {        ///         /// 自定义连接串        ///         ///         public KingEntities(string Connstring)            : base(Connstring)        {        }        #region FetchDBDateTime Function                      ///         /// 获取数据库的当前时间        ///         /// 
public DateTime FetchDBDateTime() { var now = this.Database.SqlQuery
("SELECT GetDate()").First(); if (now == null) { now = new DateTime(1900, 1, 1, 0, 0, 0); } return now.Value; } #endregion }}
在需要的地方,只要如下调用即可

dbContext.FetchDBDateTime()
转载请注明出处。

转载于:https://www.cnblogs.com/sparkleDai/p/7604919.html

你可能感兴趣的文章
6-tips-for-managing-property-files-with-spring--转
查看>>
到底什么是实例化
查看>>
Django 学习笔记之四 QuerySet常用方法
查看>>
图像增强系列之图像自动去暗角算法。
查看>>
那些年困扰我们的委托(C#)
查看>>
【emWin】例程十一:GIF图像显示
查看>>
WebAPI性能优化之压缩解压
查看>>
jquery获取下拉框中的循环值
查看>>
HTML5 一些有用的 APIs
查看>>
Unity获取指定资源目录下的所有文件
查看>>
C - The C Answer (2nd Edition) - Exercise 1-12
查看>>
linux定时任务cron 安装配置
查看>>
SequenceFile文件
查看>>
人脸和性别识别(基于OpenCV)
查看>>
Nginx Java 日志切割脚本
查看>>
浅谈代码审计入门实战:某博客系统最新版审计之旅
查看>>
nyoj 119士兵杀敌(三)(线段树区间最值查询,RMQ算法)
查看>>
truncate/drop表非常慢,怎么办?用硬链接,极速体验
查看>>
spring boot测试
查看>>
Timer使用
查看>>