EF、Linq查询/获取服务器时间

很多人做项目时候当喜欢用DateTime方法来做服务器时间直接写入了数据库,不得不说这是非常错误的,有些用户的电脑自己会把自己的电脑时间改了忘记了改回正确的时间,或者有用户的电脑很老很旧主板的电池已经坏了,每次开机时间都是主板出厂的默认时间,这个时候用DateTime只有给自己和团队添加麻烦,报表永远都不对,所以很有必要所有的时间统一使用服务器的时间。

如果是用ADO.NET就很方便,Sql直接用GetDate()就解决了,但是Linq好像没有这一个函数,或者有,只是我不知道(请原谅我只是一头刚发芽的小菜),那么Linq用什么方式来解决这个问题呢?

1、单独写一条Linq来获取服务器时间:

var server_time=ctx.Set<ActivationInfoModel>().Select(s => DateTime.Now).First();

2、在更新Model的DateTime字段=server_time,这时添加到数据库里的时间就是当前服务器的时间了.

参考代码:

public partial class DemoDBEntities : DbContext
{
    public DemoDBEntities()
        : base("name=DemoDBEntities")
   {
   }
    
   protected override void OnModelCreating(DbModelBuilder modelBuilder)
   {
        throw new UnintentionalCodeFirstException();
   }
   public virtual DbSet<DemoModel> DemoModel { get; set; }
}
public static void Update_IsBuy(int id)
{
     using (var ctx = new DemoDBEntities())
     {
          //获取服务器当前时间
          var server_time=ctx.Set<DemoModel>().Select(s => DateTime.Now).First();
          var result =(from a in ctx.DemoModel
                       where a.ID == id
                       select a).FirstOrDefault();
          result.IsBuy = true;
          result.BuyTime = server_time;
          ctx.SaveChanges();
     }
}


猜你喜欢

转载自blog.csdn.net/fjfjfjgh/article/details/80810606