У меня есть запрос на возврат случайных отдельных строк из базы данных Access. Вот запрос:Почему AccessDataSource возвращает разные результаты для запроса в Access?
SELECT * FROM
(SELECT DISTINCT m.MemberID, m.Title, m.FullName, m.Address,
m.Phone, m.EmailAddress, m.WebsiteAddress FROM Members AS m INNER JOIN MembersForType AS t ON m.MemberID = t.MemberID WHERE
(Category = 'MemberType1' OR Category = 'MemberType2')) as Members
ORDER BY RND(members.MemberID) DESC
При запуске этого в Access возвращает строки в другом порядке каждый раз, как в случайном порядке сортировки. Когда я запускаю его через мое веб-приложение, но строки возвращаются в том же порядке каждый раз. Вот как я это называю в моем фоновым кодом:
private void BindData()
{
using (AccessDataSource ds = new AccessDataSource("~/App_Data/mydb.mdb", GetSQLStatement()))
{
ds.DataSourceMode = SqlDataSourceMode.DataReader;
ds.CacheDuration = 0;
ds.CacheExpirationPolicy = DataSourceCacheExpiry.Absolute;
ds.EnableCaching = false;
listing.DataSource = ds.Select(new DataSourceSelectArguments());
listing.DataBind();
if (listing.Items.Count == 0)
noResults.Visible = true;
else
noResults.Visible = false;
}
}
Я добавил все, что материал о кэшировании, потому что я думал, что, возможно, был задан вопрос в кэше, но результат был тот же. Я поставил точку останова в коде, чтобы убедиться, что запрос был таким же, как и выше, и это было.
Любые идеи? Это сводит меня с ума.
Он возвращается с тем же случайным порядком или есть какой-то интеллект в заказе, который вы видите? –
Кажется, что тот же случайный порядок. – Phill
Я напишу это в комментарии, поскольку идея устранения неполадок у меня есть, а не ответ, но вы попробовали добавить «RND (members.MemberID)» в предложение select в веб-версии, чтобы увидеть, возвращает ли он тот же случайный номер каждый раз? Одна мысль состоит в том, что он оптимизирует RND() из-за кэширования результата. – JohnFx