0

我有一个控制台应用程序,它可以导入客户提供给我们的文件。

该文件有多个记录,需要导入。

如果我使用单个会话将它们全部导入,如果其中一个失败,它们都会失败。这很糟糕。

我一直在疯狂地试图简单地弄清楚如何创建会话。我读过的每一个资源都是关于如何在 MVC 项目中使用结构映射配置 NHibernate 以使每个请求都有一个会话。

我得到它。这对网络有好处。我知道。

我不能在这里。我需要为每条记录创建一个新会话。

我要这个

foreach(var record in recordsToImport)
{
     //CREATE NEW SESSION or RANSACTION //I don't care about wrapping it in UnitOfWork
     //BEGIN TRANSACTION HERE
     myRepoClass.Update(record);
     //COMMIT TRANSACTION HERE

}
4

2 回答 2

1

您可能只需要循环中的新事务。

对于新交易,您的代码应如下所示

ISession session = ...; 
// Create the session as you are currently doing it
// Pass the session into myRepoClass

foreach(var record in recordsToImport)
{
     using (ITransaction trx = session.BeginTransaction())
     {
         myRepoClass.Update(record);
         trx.Commit();
     }
}
于 2013-09-06T21:16:35.543 回答
0

请参阅NHibernate 文档

...打开一个ISession很简单:

ISession session = sessions.OpenSession();

... 哪里sessionsISessionFactory.

于 2013-09-10T14:26:03.883 回答