如何在 LINQ 查询中使用 SQL Server 时钟
我正在编写一个具有“签入”功能的应用程序 - 本质上是一个系统托盘应用程序,通过写入 SQL 数据库每 20 秒进行一次签入。
然后,我有第二个应用程序检查此表以查看客户端是否已签入,如果客户端在 60 秒内未签入,则执行操作。
我需要确保写入 sql 数据库的时间是本地服务器时间,而不是客户端时间 - 否则我会遇到同步问题。
我正在使用 Linq-to-SQL - 我怎样才能实现这一目标?
I'm writing an app which has a "check in" facility - essentially a system tray app that checks in every 20 seconds by writing to a SQL db.
I then have a second app that checks this table to see if the client has checked in, and performs an action if the client has not checked in for 60 seconds.
I need to ensure that the time written to the sql database is the local server time, not the client time - as otherwise I'll have synchronisation issues.
I'm using Linq-to-SQL - how can I acheive this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
实际上,根据一般经验,您也不应该使用服务器的本地时间 - 使用 UTC 时间(协调世界时间)。
在 Linq to Sql 中,您可以使用 < code>SqlFunctions.GetUtcDate() 映射到 SQL Server 中的
GETUTCDATE()
。Actually as a general rule of thumb you should not use the local time of the server either - use UTC time (Coordinated Universal Time) instead.
In Linq to Sql you can use
SqlFunctions.GetUtcDate()
for this which maps toGETUTCDATE()
in SQL Server.编写一个返回
GetDate()
的用户定义函数并将其添加到您的 dbml 文件中Write a user defined function that returns
GetDate()
and add it to you dbml file试试这个:
编辑:这需要成为您的 DataContext 类的一部分。
Try this:
EDIT: this needs to be a part of your DataContext class.
此解决方案适用于任何 .NET 版本:它应该比其他解决方案更有利于速度和网络流量。
1) 在 SQL Server 中创建函数:
2) 将函数添加到 LINQ to SQL 图表的“存储过程”部分
3) 从代码中调用函数
This solution for any .NET version: it should be more beneficial for the speed and network traffic than other solutions.
1) create the function in SQL server:
2) Add function to your LINQ to SQL diagram into the Stored Procedures section
3) Call your function from your code
Acaz Souza 的答案有效,但它需要成为数据上下文的一部分。要将其放在特定的数据上下文类之外(这可能更可重用),请尝试将其作为扩展方法:
Acaz Souza's answer works, but it needs to be part of the data context. To put it outside the specific data context class, which is probably more reusable, try this as an extension method: