gpt4 book ai didi

c# - .NET Core DI 处理的 NHibernate SessionFactory

转载 作者:太空狗 更新时间:2023-10-29 21:32:10 31 4
gpt4 key购买 nike

尝试将 NHibernate SessionFactory 设为单例并将 Session 设为作用域,所有这些都由 .NET Core 依赖注入(inject)处理。我在 Startup.cs 中这样配置了那些:

services.AddSingleton<NHibernate.ISessionFactory>(factory =>
{
return Fluently
.Configure()
.Database(() =>
{

return FluentNHibernate.Cfg.Db.MsSqlConfiguration
.MsSql2012
.ShowSql()
.ConnectionString(ConnectionString);
})
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Model>())
.BuildSessionFactory();
});

services.AddScoped<NHibernate.ISession>(factory =>
factory
.GetServices<NHibernate.ISessionFactory>()
.First()
.OpenSession()
);

我的问题是 - 我如何准确地传递 Session 或 SessionFactory 实例,例如,在存储库类中?

最佳答案

只需将 ISession 对象作为参数传递给存储库构造函数。

public class Repository {
private readonly ISession session;

public Repository(NHibernate.ISession session) {
this.session = session;
}

public void DoSomething() {
this.session.SaveOrUpdate(...);
}
}

当您从 ServicesCollection (DI) 请求存储库实例时,ISession 将自动解析。

关于c# - .NET Core DI 处理的 NHibernate SessionFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47742926/

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