1

我有一个 Windows 服务,它查找某个文件并将其保存到数据库中。我正在使用存储库模式并使用 Castle Windsor 进行 DI。

这就是我注册 NHibernate ISession 和我的工作单元的方式。

 container.Register(
            Component.For<ISession>().UsingFactoryMethod(() => NHibernateSessionManager.Instance.GetSession()).LifeStyle.Transient);

            container.Register(
                Component.For<INHibernateSessionManager>().Instance(NHibernateSessionManager.Instance).LifestyleSingleton());

            container.Register(
                Component.For<IUnitOfWork<ISession>>().ImplementedBy<Data.Framework.Nhibernate.UnitOfWork.NHibernateUnitOfWork>().LifeStyle.Transient);

            container.Register(Component.For(typeof(IRepository<>)).ImplementedBy(typeof(NHibernateRepository<>)).LifeStyle.Transient);

这对我不起作用,因为当它尝试解析存储库时,它抱怨已经添加到存储库中的密钥。

你能告诉我如何正确地做到这一点吗?

谢谢,-迈克

4

0 回答 0