Как это переводится с SQL на LINQ? - PullRequest
3 голосов
/ 04 февраля 2012

Просто интересно, каков наилучший (самое быстрое время выполнения) метод перевода следующего 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 ]

2 голосов
/ 04 февраля 2012
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 голос
/ 05 февраля 2012

Я бы просто добавил еще один пункт в ответ выше. Ответ выше использует DateTime.Today, который использует время с компьютера, на котором выполняется код, вместо getdate (), который получает время от Sql Server. Это может иметь значение, если ваше приложение имеет отдельный сервер базы данных. Для этого вам необходимо добавить следующую функцию в ORM.

[Function(Name="GetDate", IsComposable=true)] 
 public DateTime GetSystemDate() 
 {   
    MethodInfo mi = MethodBase.GetCurrentMethod() as MethodInfo;   
    return (DateTime)this.ExecuteMethodCall(this, mi, new object[]{}).ReturnValue; 
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...