这如何转换为SQL到LINQ?

时间:2012-02-04 17:55:14

标签: c# sql linq sql-server-2008 linq-to-sql

只是想知道将以下SQL转换为LINQ to SQL的最佳(最快执行时间)方法是什么?

IF EXISTS (SELECT TOP 1 * FROM HealthIndicators WHERE LogDate = getdate())
     UPDATE HealthIndicators SET Timeouts = 32
ELSE INSERT INTO HealthIndicators (Timeouts, 32)

如果这是一个转贴我很抱歉,但我无法找到关于这个主题的答案(我是新人,请你好!)

2 个答案:

答案 0 :(得分:2)

var d = DateTime.Today; // or .Now
if (db.HealthIndicators.FirstOrDefault(h => h.LogDate == d) != null)
// or Any(h => h.LogDate == d)
{
    // update
}
else
{
    // insert
}

答案 1 :(得分:1)

我只想在上面的答案中添加一个项目。上面的答案使用DateTime.Today,它使用运行代码的机器上的时间而不是从Sql Server获取时间的getdate()。如果您的应用程序具有单独的数据库服务器,则此问为此,您必须将以下功能添加到ORM。

[Function(Name="GetDate", IsComposable=true)] 
 public DateTime GetSystemDate() 
 {   
    MethodInfo mi = MethodBase.GetCurrentMethod() as MethodInfo;   
    return (DateTime)this.ExecuteMethodCall(this, mi, new object[]{}).ReturnValue; 
 }