目前我的存儲庫有2個構造函數。當我從我的mvc網站打電話給我時,我一直在呼叫第一個構造函數,因此打開一個新的會話。我應該通過會議嗎?我應該如何做到這一點。nhibernate:存儲庫會話管理
public CompanyRepository()
{
_session = NHibernateHelper.OpenSession();
}
public CompanyRepository(ISession session)
{
_session = session;
}
public class NHibernateHelper
{
private static ISessionFactory _sessionFactory;
private static ISessionFactory SessionFactory
{
get
{
if (_sessionFactory == null)
{
var configuration = new Configuration();
configuration.Configure();
configuration.AddAssembly(typeof(UserProfile).Assembly);
configuration.SetProperty(NHibernate.Cfg.Environment.ConnectionStringName,
System.Environment.MachineName);
_sessionFactory = configuration.BuildSessionFactory();
}
return _sessionFactory;
}
}
public static ISession OpenSession()
{
return SessionFactory.OpenSession();
}
}
我正在使用Ninject IOC容器(對我來說很新)。我有以下容器。我如何將ISession綁定到CompanyRepository。
private class EStoreDependencies : NinjectModule
{
public override void Load()
{
Bind<ICompanyRepository>().To<CompanyRepository>();
Bind<IUserProfileRepository>().To<UserProfileRepository>();
Bind<IAddressRepository>().To<AddressRepository>();
Bind<IRolesService>().To<AspNetRoleProviderWrapper>();
Bind<IUserService>().To<AspNetMembershipProviderWrapper>();
Bind<ICurrentUserSerivce>().To<DefaultCurrentUserSerivce>();
Bind<IPasswordService>().To<AspNetMembershipProviderWrapper>();
Bind<IStatusResponseRepository>().To<StatusResponseRepository>();
Bind<ICategoryRepository>().To<CategoryRepository>();
Bind<IProductRepository>().To<ProductRepository>();
}
}
我認爲,我正在使用ninject(上面添加的代碼)。我如何將會話綁定到CompanyRepository。對不起,這一切還沒有點擊。 – frosty 2010-06-04 12:08:57
'綁定()。到()。WithConstructorArgument(「session」,NHibernateHelper.OpenSession());'可能有其他方法來做到這一點。 –
2010-06-04 12:34:59