1

同じ仕事をする必要がある2つのクエリがあります:

1.

var date = DateTime.
var q = _entityManager.Websites.Include("OfflineSites")
        .Where(website => (website.LastCheck == null) || SqlFunctions.DateDiff("minute",  website.LastCheck.Value, date) >= website.CurrentPingTime);                  
q.QueryStrategy = QueryStrategy.DataSourceOnly;

var lst = q.Execute().Cast<Website>().ToList();

2.

 var query = new PassthruEsqlQuery(typeof(Website), @"Select * From Websites Where Id in (Select Id From (Select Id,CurrentPingTime,Abs(DateDiff(minute,CURRENT_TIMESTAMP,LastCheck)) LastCheckDiffNow From Websites )
                                                                as ret  Where CurrentPingTime <= LastCheckDiffNow)");
query.QueryStrategy = QueryStrategy.DataSourceOnly;

var result = query.With(_entityManager).Execute().Cast<Website>(); 
var lst = result.ToList()

ただし、最初のものは魅力のように機能しますが遅くなります.2番目のものは空のリストを返します. SSMSでSQLコードをチェックしたところ、良い結果が得られたため、これは奇妙です。この動作の理由は何ですか。

4

1 に答える 1

1

この PassthruEsqlQuery が実際にエラーをスローしていないことを確認してください。PassthruEsqlQuery には SQL ではなく ESQL が必要であり、表示されている内容は正しくありません。DevForce クエリの詳細についてはこちら、ESQLについてはこちらを参照してください。

于 2014-05-27T00:18:09.180 に答える