NHibernate - Проверьте, были ли данные вставлены или нет - PullRequest
1 голос
/ 12 марта 2019

У меня есть функция, используемая для импорта данных, каждая запись данных будет автоматически генерировать № базы на основе максимального № в базе данных.Я использовал ключ, чтобы проверить, вставляет ли какой-либо запрос, все остальные запросы будут отклонены.Ключ будет освобожден после выполнения транзакции Commit () или имеет исключение.Иногда, проблема возникает, когда есть два последовательных вызова запроса к этой функции, номер был дубликатом.Я предполагаю, что после того, как я вызову commit и отпущу ключ, данные еще не вставлены, и следующий запрос получит неправильный номер.

try {
    if (mInvoiceList.Length > 50) // this is List data
       this.isStateLess = true;

    if(hasKey)
       throws new Exception("reject");

    foreach(mInvoiceList) {
       //get Maximum no and set to each record (next No = max + 1)
    }

    if (!this.isStateLess)
    {
        NHibernateSessionManager.Instance.CommitTransactionOn(sessionFactoryConfigPath);
    } 
    else 
    {
        NHibernateSessionManager.Instance.CommitTransactionStateLessOn(sessionFactoryConfigPath);
    }
}
catch(Exception e) {
    //release Key
}
finally {
    //release Key
}

Есть какие-нибудь идеи для этой проблемы?Большое спасибо за помощь!

...