gpt4 book ai didi

c# - WinForm 应用程序中的 NHibernate 和 AUTOFAC

转载 作者:行者123 更新时间:2023-11-30 12:14:51 25 4
gpt4 key购买 nike

我正在寻找一个很好的教程来在 WinForm 应用程序中使用 NHibernate 配置 AUTOFAC,在创建表单时注入(inject) ISession 并在表单关闭时处理 ISession。

我找到了很多 MVC 和 ASP.NET 示例,但没有一个使用 WinForm。

你能给我指出正确的方向吗?

最佳答案

我会做这样的事

public class FormFactory
{
readonly ILifetimeScope scope;

public FormFactory(ILifetimeScope scope)
{
this.scope = scope;
}

public TForm CreateForm<TForm>() where TForm : Form
{
var formScope = scope.BeginLifetimeScope("FormScope");
var form = formScope.Resolve<TForm>();
form.Closed += (s, e) => formScope.Dispose();
return form;
}
}

将您的 ISession 注册为 InstancePerLifetimeScope,Autofac 将在处理范围时处理它。在这个例子中,我使用了“FormScope”标签,这样如果我不小心尝试解析另一个范围(可能是顶级容器范围)之外的 ISession,Autofac 将抛出异常。

builder.Register(c => SomeSessionFactory.OpenSession())
.As<ISession>()
.InstancePerMatchingLifetimeScope("FormScope");

您的代码必须显式提交事务(可能在用户单击“保存”或其他操作时),并且如果用户单击“取消”,它可能应该回滚事务。 Implicit rollback is not recommended.

关于c# - WinForm 应用程序中的 NHibernate 和 AUTOFAC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8761367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com