CodeSmith Nhibernate

发布于 2024-10-08 10:40:29 字数 203 浏览 3 评论 0原文

我使用 Code Smith Nhibernate 模板开发一个多线程应用程序,我读到我必须使用一个会话或每个线程,问题是我不知道如何从 CodeSmith 生成的类中获取新会话...

任何人都可以为我提供一个非常非常简单的方法吗?如何在 2 个不同的线程中使用 CodeSmith Nhibernate 的示例?或者至少为我提供创建新会话的代码?

提前致谢。

Im developing a multithreading application using code smith Nhibernate Template, i read that i must use a session or every thread, problem is i dont know how to get a new session from CodeSmith Generated classes ...

can any body provide me a very very simple example of how to use CodeSmith Nhibernate in a 2 different threads? or at least privide me of code to create new session ?

thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

眼前雾蒙蒙 2024-10-15 10:40:29

CodeSmith 生成的 Manager 对象已经是线程安全的,并确保每个线程都会获得它自己的 NHibernate 会话对象。为了确保线程正确打开和关闭,始终处理管理器非常重要。这是一个例子:

IManagerFactory managerFactory = new ManagerFactory();
using (ICategoryManager categoryManager = managerFactory.GetCategoryManager())
{
    Category categoryA = new Category();
    categoryA.Id = "TEST1";
    categoryA.Name = "Test 1";
    categoryA.Descn = "Hello world!";

    categoryManager.Save(categoryA);
    categoryManager.Session.CommitChanges();
}

The CodeSmith generated Manager objects are already thread safe, and ensure that each thread will get it's own NHibernate session object. To ensure that threads get opened and closed properly, it is very important that you always dispose of the managers. Here is an example:

IManagerFactory managerFactory = new ManagerFactory();
using (ICategoryManager categoryManager = managerFactory.GetCategoryManager())
{
    Category categoryA = new Category();
    categoryA.Id = "TEST1";
    categoryA.Name = "Test 1";
    categoryA.Descn = "Hello world!";

    categoryManager.Save(categoryA);
    categoryManager.Session.CommitChanges();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文