NHibernate session.Flush () не работает и нет сообщений об ошибках - PullRequest
0 голосов
/ 12 мая 2018

Когда я использую NHibernate для обновления или сохранения (вставки) сущности, я обнаруживаю, что код (session.Flush ()) не работает и нет сообщения об ошибке, и программа заканчивается там (не разбивка, функция заканчиваетсятам).Но мне удалось использовать его для вставки сущности, и я не модифицировал код.Я в замешательстве, пожалуйста, помогите мне.Код есть:

ISession session = SessionBuilder.SessionFactory.OpenSession();

        switch (editType)
        {
            case 'S': {
                    try
                    {
                        //new info set default;
                        cs.ID = 132;
                        clc.ID = cs.ID;
                        cmc.ID = cs.ID;
                        cs.COEFFICIENT_ID = 0;
                        cs.IF_ASSOCIATION = 'N';
                        cs.COST_PRICE = 0.0f;

                        session.Save(cs);
                        session.Save(clc);
                        session.Save(cmc);
                        session.Flush();//<<--if i set a breakpoint in there,
                          //and next step the whole function will end,no catch no finally
                          //no return,the application seem never run this function.
                          //and the application continues to run normal.

                        flg = true;
                    }catch (Exception e)
                    {
                        flg = false;
                        throw e;
                    }
                    finally
                    {
                        session.Close();
                    }
                    break;
                }
            case 'E': {
                    try
                    {
                        session.Update(cs);
                        session.Update(clc);
                        session.Update(cmc);
                        session.Flush();//<<--if i set a breakpoint in there,
                          //and next step the whole function will end,no catch no finally
                          //no return,the application seem never run this function.
                          //and the application continues to run normal.
                        flg = true;
                    }catch(Exception e)
                    {
                        flg = false;
                        throw e;
                    }
                    finally
                    {
                        session.Close();
                    }

                    break; }
            default: { return false; }
        }
        return flg;
    }

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

да, проблема в том, что некоторые строки превышают предельную длину типа базы данных. Но я запутался, почему VS не может поймать ошибку и кажется, что этого не произошло?

0 голосов
/ 12 мая 2018

Вместо Session.Flush () попробуйте использовать транзакцию:

using (var transaction = session.BeginTransaction())
{
    transaction.Commit();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...