Я использовал 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. Есть идеи, почему?