listo, lo puede resolver configurando el fetch de la manytoone. 
 
mapper.Class<Galeria>(x =>
{
x.ManyToOne(g => g.Linea, mpm =>
{
mpm.NotNullable(true);
mpm.Fetch(ConfOrm.Mappers.FetchMode.Join);
});
x.ManyToOne(g => g.Temporada, mpm => 
{ 
mpm.NotNullable(true);
mpm.Fetch(ConfOrm.Mappers.FetchMode.Join);
});
});
 
 
saludos





Mario Dal Lago

--- El vie 27-ago-10, Mario Dal Lago <[email protected]> escribió:


De: Mario Dal Lago <[email protected]>
Asunto: Re: [NHibernate-Hispano] Consulta proxy dinamico
Para: [email protected]
Fecha: viernes, 27 de agosto de 2010, 15:59






si la estube leyendo, probe poner el reflection optimizer en false como dice el 
articulo pero sigue fallando..
gracias...



Mario Dal Lago

--- El vie 27-ago-10, Alberto Alcaide <[email protected]> escribió:


De: Alberto Alcaide <[email protected]>
Asunto: Re: [NHibernate-Hispano] Consulta proxy dinamico
Para: [email protected]
Fecha: viernes, 27 de agosto de 2010, 15:50


Quizas esto te pueda servir, 

http://nhforge.org/wikis/howtonh/run-in-medium-trust.aspx

Saludos,


2010/8/27 Mario Dal Lago <[email protected]>






hola, tengo una aplicacion en un hosting llamado Dattatec, la aplicacion andaba 
sin problemas, hasta el otro dia donde empeze a recibir esta excepcion de NH.
 
Unable to obtain public key for StrongNameKeyPair. 

[ArgumentException: Unable to obtain public key for StrongNameKeyPair.]
   System.Reflection.StrongNameKeyPair.nGetPublicKey(Boolean exported, Byte[] 
array, String container) +0
   System.Reflection.StrongNameKeyPair.get_PublicKey() +30
   System.AppDomain.InternalDefineDynamicAssembly(AssemblyName name, 
AssemblyBuilderAccess access, String dir, Evidence evidence, PermissionSet 
requiredPermissions, PermissionSet optionalPermissions, PermissionSet 
refusedPermissions, StackCrawlMark& stackMark, IEnumerable`1 
unsafeAssemblyAttributes) +595
   System.AppDomain.DefineDynamicAssembly(AssemblyName name, 
AssemblyBuilderAccess access) +39
   Castle.DynamicProxy.ModuleScope.CreateModule(Boolean signStrongName) +282
   Castle.DynamicProxy.ModuleScope.ObtainDynamicModuleWithStrongName() +125
   Castle.DynamicProxy.ModuleScope.ObtainDynamicModule(Boolean isStrongNamed) 
+68
   
Castle.DynamicProxy.Generators.Emitters.ClassEmitter.CreateTypeBuilder(ModuleScope
 modulescope, String name, Type baseType, IEnumerable`1 interfaces, 
TypeAttributes flags, Boolean forceUnsigned) +103
   Castle.DynamicProxy.Generators.Emitters.ClassEmitter..ctor(ModuleScope 
modulescope, String name, Type baseType, IEnumerable`1 interfaces, 
TypeAttributes flags, Boolean forceUnsigned) +98
   Castle.DynamicProxy.Generators.Emitters.ClassEmitter..ctor(ModuleScope 
modulescope, String name, Type baseType, IEnumerable`1 interfaces) +98
   
Castle.DynamicProxy.Generators.InvocationTypeGenerator.GetEmitter(ClassEmitter 
class, Type[] interfaces, INamingScope namingScope, MethodInfo methodInfo) +203
   Castle.DynamicProxy.Generators.InvocationTypeGenerator.Generate(ClassEmitter 
class, ProxyGenerationOptions options, INamingScope namingScope) +234
   
Castle.DynamicProxy.Contributors.ClassProxyTargetContributor.BuildInvocationType(MetaMethod
 method, ClassEmitter class, ProxyGenerationOptions options) +303
   
Castle.DynamicProxy.Contributors.ClassProxyTargetContributor.GetInvocationType(MetaMethod
 method, ClassEmitter class, ProxyGenerationOptions options) +49
   
Castle.DynamicProxy.Contributors.ClassProxyTargetContributor.GetMethodGenerator(MetaMethod
 method, ClassEmitter class, ProxyGenerationOptions options, 
CreateMethodDelegate createMethod) +196
   
Castle.DynamicProxy.Contributors.CompositeTypeContributor.ImplementMethod(MetaMethod
 method, ClassEmitter class, ProxyGenerationOptions options, 
CreateMethodDelegate createMethod) +98
   
Castle.DynamicProxy.Contributors.CompositeTypeContributor.Generate(ClassEmitter 
class, ProxyGenerationOptions options) +212
   Castle.DynamicProxy.Generators.ClassProxyGenerator.GenerateType(String name, 
Type[] interfaces, INamingScope namingScope) +633
   Castle.DynamicProxy.Generators.ClassProxyGenerator.GenerateCode(Type[] 
interfaces, ProxyGenerationOptions options) +1132
   Castle.DynamicProxy.DefaultProxyBuilder.CreateClassProxyType(Type 
classToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions 
options) +151
   Castle.DynamicProxy.ProxyGenerator.CreateClassProxyType(Type classToProxy, 
Type[] additionalInterfacesToProxy, ProxyGenerationOptions options) +61
   Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type classToProxy, 
Type[] additionalInterfacesToProxy, ProxyGenerationOptions options, Object[] 
constructorArguments, IInterceptor[] interceptors) +329
   Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type classToProxy, 
Type[] additionalInterfacesToProxy, ProxyGenerationOptions options, 
IInterceptor[] interceptors) +54
   Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type classToProxy, 
Type[] additionalInterfacesToProxy, IInterceptor[] interceptors) +55
   NHibernate.ByteCode.Castle.ProxyFactory.GetProxy(Object id, 
ISessionImplementor session) in 
c:\CSharp\NH\nhibernate\src\NHibernate.ByteCode.Castle\ProxyFactory.cs:32

[HibernateException: Creating a proxy instance failed]
   NHibernate.ByteCode.Castle.ProxyFactory.GetProxy(Object id, 
ISessionImplementor session) in 
c:\CSharp\NH\nhibernate\src\NHibernate.ByteCode.Castle\ProxyFactory.cs:43
   NHibernate.Tuple.Entity.AbstractEntityTuplizer.CreateProxy(Object id, 
ISessionImplementor session) in 
c:\CSharp\NH\nhibernate\src\NHibernate\Tuple\Entity\AbstractEntityTuplizer.cs:236
   NHibernate.Persister.Entity.AbstractEntityPersister.CreateProxy(Object id, 
ISessionImplementor session) in 
c:\CSharp\NH\nhibernate\src\NHibernate\Persister\Entity\AbstractEntityPersister.cs:3750
   
NHibernate.Event.Default.DefaultLoadEventListener.CreateProxyIfNecessary(LoadEvent
 event, IEntityPersister persister, EntityKey keyToLoad, LoadType options, 
IPersistenceContext persistenceContext) in 
c:\CSharp\NH\nhibernate\src\NHibernate\Event\Default\DefaultLoadEventListener.cs:223
   NHibernate.Event.Default.DefaultLoadEventListener.ProxyOrLoad(LoadEvent 
event, IEntityPersister persister, EntityKey keyToLoad, LoadType options) in 
c:\CSharp\NH\nhibernate\src\NHibernate\Event\Default\DefaultLoadEventListener.cs:154
   NHibernate.Event.Default.DefaultLoadEventListener.OnLoad(LoadEvent event, 
LoadType loadType) in 
c:\CSharp\NH\nhibernate\src\NHibernate\Event\Default\DefaultLoadEventListener.cs:86
   NHibernate.Impl.SessionImpl.FireLoad(LoadEvent event, LoadType loadType) in 
c:\CSharp\NH\nhibernate\src\NHibernate\Impl\SessionImpl.cs:2554
   NHibernate.Impl.SessionImpl.InternalLoad(String entityName, Object id, 
Boolean eager, Boolean isNullable) in 
c:\CSharp\NH\nhibernate\src\NHibernate\Impl\SessionImpl.cs:1427
   NHibernate.Type.EntityType.ResolveIdentifier(Object id, ISessionImplementor 
session) in c:\CSharp\NH\nhibernate\src\NHibernate\Type\EntityType.cs:386
   NHibernate.Type.EntityType.ResolveIdentifier(Object value, 
ISessionImplementor session, Object owner) in 
c:\CSharp\NH\nhibernate\src\NHibernate\Type\EntityType.cs:424
   NHibernate.Engine.TwoPhaseLoad.InitializeEntity(Object entity, Boolean 
readOnly, ISessionImplementor session, PreLoadEvent preLoadEvent, PostLoadEvent 
postLoadEvent) in 
c:\CSharp\NH\nhibernate\src\NHibernate\Engine\TwoPhaseLoad.cs:78
   NHibernate.Loader.Loader.InitializeEntitiesAndCollections(IList 
hydratedObjects, Object resultSetId, ISessionImplementor session, Boolean 
readOnly) in c:\CSharp\NH\nhibernate\src\NHibernate\Loader\Loader.cs:592
   NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, 
QueryParameters queryParameters, Boolean returnProxies) in 
c:\CSharp\NH\nhibernate\src\NHibernate\Loader\Loader.cs:460
   
NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor
 session, QueryParameters queryParameters, Boolean returnProxies) in 
c:\CSharp\NH\nhibernate\src\NHibernate\Loader\Loader.cs:236
   NHibernate.Loader.Loader.LoadCollection(ISessionImplementor session, Object 
id, IType type) in c:\CSharp\NH\nhibernate\src\NHibernate\Loader\Loader.cs:1473
   NHibernate.Loader.Collection.CollectionLoader.Initialize(Object id, 
ISessionImplementor session) in 
c:\CSharp\NH\nhibernate\src\NHibernate\Loader\Collection\CollectionLoader.cs:35
   
NHibernate.Persister.Collection.AbstractCollectionPersister.Initialize(Object 
key, ISessionImplementor session) in 
c:\CSharp\NH\nhibernate\src\NHibernate\Persister\Collection\AbstractCollectionPersister.cs:579
   
NHibernate.Event.Default.DefaultInitializeCollectionEventListener.OnInitializeCollection(InitializeCollectionEvent
 event) in 
c:\CSharp\NH\nhibernate\src\NHibernate\Event\Default\DefaultInitializeCollectionEventListener.cs:51
   NHibernate.Impl.SessionImpl.InitializeCollection(IPersistentCollection 
collection, Boolean writing) in 
c:\CSharp\NH\nhibernate\src\NHibernate\Impl\SessionImpl.cs:1639
   NHibernate.Collection.AbstractPersistentCollection.Initialize(Boolean 
writing) in 
c:\CSharp\NH\nhibernate\src\NHibernate\Collection\AbstractPersistentCollection.cs:463
   NHibernate.Collection.AbstractPersistentCollection.Read() in 
c:\CSharp\NH\nhibernate\src\NHibernate\Collection\AbstractPersistentCollection.cs:262
   
NHibernate.Collection.Generic.PersistentGenericSet`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()
 in 
c:\CSharp\NH\nhibernate\src\NHibernate\Collection\Generic\PersistentGenericSet.cs:229

 
donde el problema es la generacion del proxy, seguramente la gente del hosting, 
cambie los permisos a medium a trust o algo por el estilo.
 
parte del problema lo resolvi cambiando los Session.Load por Session.Get, pero 
me quedo un solo lugar en una query que no evitar que se genere el proxy.
 
tengo estas 3 clases :
 
publicclass Temporada : Entity 
{
public ISet<Galeria> Galerias { get; set; } 

public virtual string Name { get; set; } 
public virtual DateTime Creation { get; set; } 
  
protected Temporada()
{
Galerias = new HashedSet<Galeria>();
}
public Temporada(string name):this()
{
Name = name;
}
public void AddGaleria(Galeria galeria)
{
Galerias.Add(galeria);
galeria.Temporada = this;
}
public void RemoveGaleria(Galeria g)
{
g.Temporada = null;
Galerias.Remove(g);
}

 
publicclass Galeria : Entity 
{
public Linea Linea { get; set;} 
public Temporada Temporada { get; set; } 

private readonly IList<Imagen> imagenes; 

public IEnumerable<Imagen> Imagenes 
{
get 
{
return imagenes; 
}
}

internal Galeria() 
{

}
public Galeria(Linea r) 
{
Linea = r;
imagenes = new List<Imagen>(); 
}
public void AddImagen(Imagen img) 
{
imagenes.Add(img);
}
public void AddImageRange(IList<Imagen> imgList) 
{
foreach (var img in imgList) 
{
imagenes.Add(img); 
} 
}
public void ClearImages() 
{
imagenes.Clear();
}
public void RemoveImagen(Imagen img) 
{
imagenes.Remove(img);
}
}
 
public class Linea : Entity 
{
public virtual string Description { get; set; } 
public Linea() 
{
}
public Linea (string descripcion) 
{
Description = descripcion;
}
}
 
les saque el virtual a las referencias y colecciones para evitar el Lazy..pero
con la siguiente query:
 
var criteria = sessionFactory.GetCurrentSession().CreateCriteria(typeof 
(Temporada)); 
criteria.AddOrder(Order.Desc("Creation")) 
.SetMaxResults(count); 
return criteria.List<Temporada>();
 
la temporada y las galerias las trae bien, pero la referencia a Linea en las 
instancias de galeria con proxies.
 
como puedo evitar que sea proxy ?
 
el mapping generado con ConfORM es :
 
<class name="Temporada">
    <id name="Id" column="TemporadaId" type="Int32">
      <generator class="hilo" />
    </id>
    <set name="Galerias" inverse="true" cascade="all,delete-orphan">
      <key column="TemporadaId" on-delete="cascade" />
      <one-to-many class="Galeria" />
    </set>
    <property name="Name" />
    <property name="Creation" />
  </class>
  <class name="Linea">
    <id name="Id" column="LineaId" type="Int32">
      <genera tor class="hilo" />
    </id>
    <property name="Description" />
  </class>
  <class name="Galeria">
    <id name="Id" column="GaleriaId" type="Int32">
      <generator class="hilo" />
    </id>
    <many-to-one name="Linea" column="LineaId" not-null="true" />
    <many-to-one name="Temporada" column="TemporadaId" not-null="true" />
    <list name="Imagenes" access="field.camelcase" cascade="all">
      <key column="GaleriaId" />
      <list-index />
    &a mp;nb sp; <one-to-many class="Imagen" />
    </list>
  </class>

disculpen la longitud del email!
 
gracias!
 


Mario Dal Lago
  
-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano


-- 
Saludos,

Alberto Alcaide Vargas
Desarrollador de Software
Fono 88077791

-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
  
-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano


      

-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano

Responder a