我有一个控制台应用程序,用于导入客户提供给我们的文件。
此文件有多条记录,需要导入。
如果我使用单个会话将它们全部导入,如果其中一个失败,它们都会失败。这太糟糕了。
我一直在努力想弄清楚如何创建一个会话。我读过的每一个资源都是关于如何在MVC项目中使用Structure map配置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
}
答案 0 :(得分: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();
}
}
答案 1 :(得分:0)
...打开
ISession
非常简单:ISession session = sessions.OpenSession();
...其中sessions
是ISessionFactory
。