buena la primera LOL!!
En TablePerClass y/o TablePerClassHierarchy y/o TablePerConcreteClass tenes
que especificar solo y EXCLUSIVAMENTE las root-entities.
Si vos haces
orm.TablePerClassHierarchy(new[]{typeof(Parametro), typeof(ParametroEntero
)})
estas diciendole que las dos son root-entities
"no me mapea la gerarquia" que significa? no tenes los mappings o que ?
2011/4/20 Jose Selesan <[email protected]>
> O yo no entiendo bien, o hay algo raro. Si hago esto:
>
> orm.TablePerClass<Cliente>();
> orm.TablePerClass<Evento>();
> orm.TablePerClass<Usuario>();
> orm.TablePerClassHierarchy<Parametro>();
>
>
> Funciona bien, pero si hago esto:
>
> var lista = new[] { typeof (Cliente), typeof (Evento), typeof
> (Usuario) };
>
> orm.TablePerClass(lista);
> orm.TablePerClassHierarchy<Parametro>();
>
> No me mapea la jerarquía de Parametro...
>
>
>
>
>
> 2011/4/20 Fabio Maulo <[email protected]>
>
>> si es un componente no entiendo porque hereda de BaseEntity.
>> De todas formas:
>> Si son entidade de base y queres excluirlas es suficiente que no aparezcan
>> en orm.TablePerClass(listaDeEntidadesRoot)
>> Si son entidade que están en el medio de una gerarquia y queres excluirlas
>> es suficiente con orm.Exclude<LaImplQueQueresSaltear>();
>>
>> 2011/4/20 Jose Selesan <[email protected]>
>>
>>> Buenas!, estoy usando ConfORM y me surgió el siguiente problema. Hasta
>>> ahora, tenía todas clases simples que heredan de BaseEntity, así que para
>>> decirle a ConfORM que me haga el mapeo, tenía algo así:
>>>
>>> orm.TablePerClass(typeof(Cliente).Assembly.GetTypes().Where(t =>
>>> t.Namespace.Contains("Dominio") && !t.Namespace.EndsWith("ValidationDefs")
>>> && !t.Name.Equals("BaseEntity") && !tipos.Contains(t)));
>>>
>>> donde tipos es un arreglo con algunos tipos que no quiero mapear (porque
>>> los uso como componentes).
>>>
>>> Resulta que ahora agregué un par de clases así:
>>>
>>> public abstract class Parametro: BaseEntity
>>> {
>>> public virtual string Nombre { get; set; }
>>>
>>> public abstract object Valor { get; }
>>> }
>>>
>>> public class ParametroEntero: Parametro
>>> {
>>> public virtual int ValorEntero { get; set; }
>>> public override object Valor
>>> {
>>> get { return ValorEntero; }
>>> }
>>> }
>>>
>>> Entonces, agregué orm.TablePerClassHierarchy<Parametro>();, pero no me
>>> mapea la herencia, sino que me hace un mapeo propio para la clase
>>> ParametroEntero, y si agrego Parametro y ParametroEntero al arreglo de
>>> tipos, no me mapea nada.
>>>
>>> Resumiendo, tengo lo siguiente:
>>>
>>> var tipos = new[] { typeof(TipoCliente), typeof(Dinero), typeof(Moneda),
>>> typeof(TipoOperacion), typeof(TipoPropiedad), typeof(EstadoEvento),
>>> typeof(Periodo) };
>>>
>>> var orm = new ObjectRelationalMapper();
>>> orm.TablePerClass(typeof(Cliente).Assembly.GetTypes().Where(t =>
>>> t.Namespace.Contains("Dominio") && !t.Namespace.EndsWith("ValidationDefs")
>>> && !t.Name.Equals("BaseEntity") && !tipos.Contains(t)));
>>> orm.TablePerClassHierarchy<Parametro>();
>>>
>>> Esto me genera esto:
>>>
>>> <class name="Parametro" table="Parametros" abstract="true">
>>> <id name="Id" type="Int32">
>>> <generator class="hilo" />
>>> </id>
>>> <discriminator />
>>> <property name="Nombre" />
>>> </class>
>>> <class name="ParametroEntero" table="ParametrosEnteros">
>>> <id name="Id" type="Int32">
>>> <generator class="hilo" />
>>> </id>
>>> <discriminator />
>>> <property name="ValorEntero" />
>>> <property name="Nombre" />
>>> </class>
>>>
>>> ¿Qué estoy haciendo mal?
>>>
>>> Gracias!
>>>
>>> --
>>> Para escribir al Grupo, hágalo a esta dirección:
>>> [email protected]
>>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>>
>>
>>
>>
>> --
>> Fabio Maulo
>>
>> --
>> 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
>
--
Fabio Maulo
--
Para escribir al Grupo, hágalo a esta dirección:
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano