Я использую S # arp и обновил метод Generate
в AutoPersistenceModelGenerator
для работы с Fluent NHibernate 1.1.Я также изменил имя его сборки с MyProject.Data на MyProject.Infrastructure, и я не уверен, что вызвало проблему:
public AutoPersistenceModel Generate()
{
return AutoMap.Assemblies(new myProjectMappingConfiguration(),
typeof (MyClass).Assembly)
.Conventions.Setup(GetConventions())
.IgnoreBase<Entity>()
.IgnoreBase(typeof (EntityWithTypedId<>))
.UseOverridesFromAssemblyOf<AutoPersistenceModelGenerator>();
}
В тот момент, когда Castle Windsor регистрирует сборку, содержащую вышеуказанный метод..
container.Register(
AllTypes.Pick()
.FromAssemblyNamed("MyProject.Infrastructure")
.WithService.FirstNonGenericCoreInterface("MyProject.Core"));
... выдает это исключение:
Метод 'Generate' в типе 'MyProject.Infrastructure.NHibernateMaps.AutoPersistenceModelGenerator' из сборки 'MyProject.Infrastructure, Version= 1.0.0.0, Culture = нейтральный, PublicKeyToken = null 'не имеет реализации.
Я полностью очистил проект и перестроил его, но ошибка продолжает возникать.
Я не знаю, имеет ли это значение, но вышеупомянутый метод фактически вызывается непосредственно вGlobal.asax:
private void InitializeNHibernateSession()
{
var cfg = NHibernateSession.Init(
webSessionStorage,
new string[] { Server.MapPath("~/bin/MyProject.Infrastructure.dll") },
new AutoPersistenceModelGenerator().Generate(),
Server.MapPath("~/NHibernate.config"));
}
Я пытался удалить регистрацию IOC, но затем выдается та же ошибка в этом методе:
public void Initialize(Action initMethod)
{
if (!this.NHibernateSessionIsLoaded)
{
lock (syncLock)
{
if (!this.NHibernateSessionIsLoaded)
{
initMethod();
this.NHibernateSessionIsLoaded = true;
}
}
}
}
ОБНОВЛЕНИЕ
Я пересоздал свой проект и снова откатил тот же процесс - ошибка возникает, когда я обновляю Fluent NHibernate с версии 1.0 до 1.1.Есть идеи почему?