我开始使用最新的s#arp架构(1.9.5.0)。我有时会通过控制台应用程序使用类似的东西向数据库添加一些数据:
Repository<OriginalSequence> SequenceRepository = new Repository<OriginalSequence>();
...
SequenceRepository.SaveOrUpdate(Sequence);
SequenceRepository.DbContext.CommitChanges();
NHibernateSession.Current.Flush();
NHibernateSession.Current.Clear();
不幸的是,我得到了:
ServiceLocator尚未初始化;我试图检索SharpArch.Data.NHibernate.ISessionFactoryKeyProvider
这与我认为的DI有关。这通常只有在我在网络应用程序中使用它或有根本改变的东西时才需要?感谢。
基督教
PS:
请注意,我从以下开始:
string[] mappingAssemblies = new string[] { "Bla.Data" };
string configFile = "NHibernate.config";
NHibernate.Cfg.Configuration config = NHibernateSession.Init(
new SimpleSessionStorage(),
mappingAssemblies,
new AutoPersistenceModelGenerator().Generate(),
configFile);
这曾经很好用。
答案 0 :(得分:1)
这已在1.9.6版本中修复,但您需要在Windsor容器中注册ISessionFactoryKeyProvider的默认实现。
在“Web”项目的CastleWindsor文件夹中的ComponentRegistrar.cs中,将此代码添加到AddGenericRepositoriesTo方法中:
container.Register(
Component
.For(typeof(ISessionFactoryKeyProvider))
.ImplementedBy(typeof(DefaultSessionFactoryKeyProvider))
.Named("sessionFactoryKeyProvider"));