Как я выбираю количество (*) результатов nHibernate Подзапроса

Увы, «без помех» нуждается в некоторой помощи программиста. Для определения степени «транзакции» необходимы BEGIN и COMMIT. И ...

Ваш пример неадекватен. Для первого утверждения требуется SELECT ... FOR UPDATE. Это говорит о том, что обработка транзакций будет иметь место UPDATE для строк (строк), которые извлекает SELECT. Это предупреждение имеет решающее значение для «предотвращения помех». Теперь график времени читает:

  • script1.php BEGINs
  • script2.php BEGINs
  • script1.php выбирает данные (FOR UPDATE)
  • script2.php выбирает данные заблокирован, поэтому он ждет
  • script1.php обновляет данные
  • script1.php commit () происходит
  • script2. php выбирает данные (и получает новое значение)
  • script2.php обновляет данные
  • script2.php commit () происходит

(Примечание: это не «тупик», просто «ожидание».)

9
задан Taryn 27 June 2013 в 15:07
поделиться

5 ответов

var session = GetSession();
var criteria = session.CreateCriteria(typeof(Order))
                    .Add(Restrictions.Eq("Product", product))
                    .SetProjection(Projections.CountDistinct("Price"));
return (int) criteria.UniqueResult();
15
ответ дан 4 December 2019 в 06:35
поделиться

Решенный Мой собственный вопрос путем изменения ответа Geir-Tore.....

 IList results = session.CreateMultiQuery()
        .Add(session.CreateQuery("from Orders o").SetFirstResult(pageindex).SetMaxResults(pagesize))
        .Add(session.CreateQuery("select count(distinct e.Id) from Orders o where..."))
        .List();
    return results;
2
ответ дан 4 December 2019 в 06:35
поделиться

Вот проект того, как я делаю это:

Запрос:

public IList GetOrders(int pageindex, int pagesize)
{
    IList results = session.CreateMultiQuery()
        .Add(session.CreateQuery("from Orders o").SetFirstResult(pageindex).SetMaxResults(pagesize))
        .Add(session.CreateQuery("select count(*) from Orders o"))
        .List();
    return results;
}

ObjectDataSource:

[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable GetOrders(int startRowIndex, int maximumRows)
{
    IList result = dao.GetOrders(startRowIndex, maximumRows);
    _count = Convert.ToInt32(((IList)result[1])[0]);

    return DataTableFromIList((IList)result[0]); //Basically creates a DataTable from the IList of Orders
}
1
ответ дан 4 December 2019 в 06:35
поделиться

Вам нужен e. Идентификатор, e. Имя?

просто сделайте

выберите количество (*) из Объекта где.....

0
ответ дан 4 December 2019 в 06:35
поделиться

Я предпочитаю,

    public IList GetOrders(int pageindex, int pagesize, out int total)
    {
            var results = session.CreateQuery().Add(session.CreateQuery("from Orders o").SetFirstResult(pageindex).SetMaxResults(pagesize));

            var wCriteriaCount = (ICriteria)results.Clone());

            wCriteriaCount.SetProjection(Projections.RowCount());

            total = Convert.ToInt32(wCriteriaCount.UniqueResult());


            return results.List();
    }
0
ответ дан 4 December 2019 в 06:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: