エンティティ フレームワークを使用して 2 つのクエリを次々と作成しています。最初のクエリは常に正常に動作しますが、2 番目のクエリは常に私を返します。
メソッドの順序を変更すると、同じことが起こります。最初のメソッドは正常に動作し、2 番目のメソッドはこの例外をスローします。
ページで使用するコードは次のとおりです。
> var count = RequestBaseBL.GetGenericResultsCount(query.QuerySql);
>
> var datatable = RequestBaseBL.GetGenericResults(query.QuerySql, 0);
そして私のDALで
public int GetGenericResultsCount(string strsql)
{
using (var connection = (SqlConnection)_context.Database.Connection)
{
var adapter = new SqlDataAdapter(strsql, connection);
var results = new DataSet();
adapter.Fill(results, "Results");
return results.Tables["Results"].Rows.Count;
}
}
public DataTable GetGenericResults(string strsql, int pageIndex)
{
StringBuilder sb = new StringBuilder();
sb.Append("WITH MyPagedData as ( ");
int indexFrom = strsql.IndexOf("from");
sb.Append(strsql.Substring(0, indexFrom));
sb.Append(", ");
sb.Append("ROW_NUMBER() OVER(ORDER BY RequestBaseId DESC) as RowNum ");
sb.Append(strsql.Substring(indexFrom));
sb.Append(") ");
sb.Append("SELECT * from MyPagedData where RowNum between @StartIndex and @StartIndex + 10");
using(var connection = (SqlConnection)_context.Database.Connection)
{
var adapter = new SqlDataAdapter(sb.ToString(), connection);
adapter.SelectCommand.Parameters.Add("@StartIndex", SqlDbType.Int).Value = pageIndex;
var results = new DataSet();
adapter.Fill(results, "Results");
return results.Tables["Results"];
}
}