NHibernate Validator выдает System.NotSupportedException после обновления до 3.1 - PullRequest
6 голосов
/ 07 ноября 2011

Кто-нибудь сталкивался с этим?

После обновления до NHibernate 3.1 я получаю следующее исключение из NHibernate Validator при выполнении тестовых случаев NUnit:

System.NotSupportedException: вызваноэлемент не поддерживается в динамической сборке.в System.Reflection.Emit.InternalAssemblyBuilder.GetManifestResourceStream (имя строки) в NHibernate.Validator.Cfg.XmlMappingLoader.AddResource (сборочная сборка, ресурс String) в NHibernate.Validator.Cfg.XmlMappingLid типа.Engine.Engine.ClassValidator..ctor (Тип clazz, IConstraintValidatorFactory constraintValidatorFactory, IDictionary`2 childClassValidators, фабрика IClassValidatorFactory) в NHibernate.Validator.Engine.StateFullClassValidatorFactory.etet.TyginTalidGateEidGateEid_GateRalid.GateRalid.GateRalid.GateRalid.GateRalid.GateRalid.GateRalid_GateRalid_GateRalid_GateRalid_GateRal_PlayerNHibernate.Validator.Engine.ValidatorEngine.GetElementOrNew (Тип entityType) в NHibernate.Validator.Engine.ValidatorEngine.InternalValidate (объектный объект, объект [] activeTags) в NHibernate.Validator.Engine.ValidatorEngine.Validate (объектный объект, объект [] activeTags) в NHibernate.Validator.Event.ValidateEalLateer, Режим EntityMode) в NHibernate.Validator.Event.ValidatePreUpdateEventListener.OnPreUpdate (событие PreUpdateEvent) в NHibernate.Action.EntityUpdateAction.PreUpdate () в d: \ CSharp \ NH \ NH \rc. \ NH \ NHS_iberстрока 200 в NHibernate.Action.EntityUpdateAction.Execute () в d: \ CSharp \ NH \ NH \ nhibernate \ src \ NHibernate \ Action \ EntityUpdateAction.cs: строка 58 в NHibernate.Engine.ActionQueue.Execute (исполняемый файл IExecutable) в d: \ CSharp \ NH \ NH \ nhibernate \ src \ NHibernate \ Engine \ ActionQueue.cs: строка 136 в NHibernate.Engine.ActionQueue.ExecuteActions (список IList) в d: \ CSharp \ NH \ NH \ nhibernate \ src \ NHibernate \Engine \ ActionQueue.cs: строка 126 в NHibernate.Engine.ActionQueue.ExecuteActions () в d: \ CSharp \ NH \ NH \ nhibernate \ src \ NHibernate \ Engine \ ActionQueue.cs: строка 170 в NHibernate.Event.Default.AbstractFlushingEventListener.PerformExecutions (сеанс IEventSource) в d: \ CSharp \ NH \ NH \ nhibernate \ src \ NHibernate \ Event \ Default \ AbstractFlushingEventListener.cs: строка 241 в NHibernate.Event.Default.DefaultFlushEventListener.OnFlush (событие FlushEvent) в d: \ CSharp \ NH \ NH \ nhibernate \ src \ NHibernate \ Event \ Default \ DefaultFlushEventListener.cs: строка 19 в NHibernate.Impl.SessionIsI..Flush () в d: \ CSharp \ NH \ NH \ nhibernate \ src \ NHibernate \ Impl \ SessionImpl.cs: строка 1472 в TestDataAccess.FooTest.TestFoo () в FooTest.cs

AsВы можете видеть из трассировки стека, ошибка возникает, когда сеанс сбрасывается, и NHibernate Validator делает свое дело.

Обновление Я попытался пройти по коду NH Validator, и кажется, что вВ какой-то момент он пытается проверить доверенность Замка сущности, а не самой сущности.Это тогда вызывает проблемы.Не знаю, что с этим делать ...

Обновление Проблема исчезнет, ​​если я использую LinFu ProxyFactoryFactory, а не Castle.К сожалению, LinFu доставляет мне других проблем , поэтому я не хочу его использовать.

1 Ответ

1 голос
/ 11 ноября 2011

NHibernate 3.2 устранил необходимость во внешних прокси-библиотеках.

Они все еще поддерживаются, но больше не распространяются, и по умолчанию используется внутренняя реализация.

Вы пробовалиОбновление?


Обновление: чтобы скомпилировать NHibernate Validator для NH 3.2, вам необходимо изменить NHibernateHelper следующим образом:

public static bool IsProxyFactoryConfigurated()
{
    var f = NHibernate.Cfg.Environment.BytecodeProvider.ProxyFactoryFactory;
    return f != null;
}

Подробнее см. NHV-116

...