intentaré salir del "programming by coincidence"...

una pregunta: cuando tengo una herencia "table per class hierarchy"
Usuario, Comerciante : Usuario, AdministradorGeneral : Usuario,...

¿en el discriminator value debo usar "`"? Si lo empleo, al hacer la
consulta para que me devuelva un determinado usuario (he probado a
obtener los datos de otra tabla y funciona), me da el siguiente error:
Object with id: 1 was not of the specified subclass: Clases.Usuario
(Discriminator was: 'Comerciante')

Muchas gracias


Saludos




On 16 sep, 18:50, Carlos Peix <[email protected]> wrote:
> Hola Ima,
> Siempre con intenciones sinceras de ayudar, te recomiendo que abandones la
> zona "programming by coincidence" [1] y hagas un esfuerzo por comprender la
> herramienta que estas utilizando, sea ADO.NET o NH.
>
> Si estoy equivocandome en la apreciacion, ya te pido disculpas por
> adelantado.
>
> Un saludo
>
> [1]http://www.pragprog.com/the-pragmatic-programmer/extracts/coincidence
>
> ----------------------------------
> Carlos Peix
>
> On Wed, Sep 16, 2009 at 12:32 PM, lma <[email protected]> wrote:
>
> > Después de unos cambios en el archivo de configuración y de quitar y
> > poner las dlls de NHibernate, ahora me salta la siguiente excepción
>
> > No se controló System.Collections.Generic.KeyNotFoundException
> >  Message="La clave proporcionada no se encontró en el diccionario."
> >  Source="mscorlib"
> >  StackTrace:
> >       en System.ThrowHelper.ThrowKeyNotFoundException()
> >       en System.Collections.Generic.Dictionary`2.get_Item(TKey key)
> >       en NHibernate.Cfg.Configuration.Mapping.GetPersistentClass
> > (String className)
> >       en NHibernate.Cfg.Configuration.Mapping.GetIdentifierType
> > (String className)
> >       en NHibernate.Type.EntityType.GetIdentifierType(IMapping
> > factory)
> >       en NHibernate.Type.EntityType.GetIdentifierOrUniqueKeyType
> > (IMapping factory)
> >       en
>
> > NHibernate.Persister.Entity.AbstractPropertyMapping.InitIdentifierPropertyPaths
> > (String path, EntityType etype, String[] columns, IMapping factory)
> >       en
> > NHibernate.Persister.Entity.AbstractPropertyMapping.InitPropertyPaths
> > (String path, IType type, String[] columns, String[] formulaTemplates,
> > IMapping factory)
> >       en
>
> > NHibernate.Persister.Entity.AbstractEntityPersister.InitOrdinaryPropertyPaths
> > (IMapping mapping)
> >       en
> > NHibernate.Persister.Entity.AbstractEntityPersister.InitPropertyPaths
> > (IMapping mapping)
> >       en
> > NHibernate.Persister.Entity.AbstractEntityPersister.PostConstruct
> > (IMapping mapping)
> >       en NHibernate.Persister.Entity.SingleTableEntityPersister..ctor
> > (PersistentClass persistentClass, ICacheConcurrencyStrategy cache,
> > ISessionFactoryImplementor factory, IMapping mapping)
> >       en NHibernate.Persister.PersisterFactory.CreateClassPersister
> > (PersistentClass model, ICacheConcurrencyStrategy cache,
> > ISessionFactoryImplementor factory, IMapping cfg)
> >       en NHibernate.Impl.SessionFactoryImpl..ctor(Configuration cfg,
> > IMapping mapping, Settings settings, EventListeners listeners)
> >       en NHibernate.Cfg.Configuration.BuildSessionFactory()
> >       en Clases.SessionFactory.Init() en C:\Documents and Settings
> > \Abel\Mis documentos\Visual Studio 2008\Projects\Proyecto\Clases
> > \SessionFactory.cs:línea 33
> >        en Clases.SessionFactory.GetSessionFactory() en C:\Documents
> > and Settings\Abel\Mis documentos\Visual Studio 2008\Projects\Proyecto
> > \Clases\SessionFactory.cs:línea 39
> >        en Clases.SessionFactory.GetNewSession() en C:\Documents and
> > Settings\Abel\Mis documentos\Visual Studio 2008\Projects\Proyecto
> > \Clases\SessionFactory.cs:línea 45
> >        en Clases.UsuarioService.GetTodosUsuarios() en C:\Documents and
> > Settings\Abel\Mis documentos\Visual Studio 2008\Projects\Proyecto
> > \Clases\Servicios\UsuarioService.cs:línea 17
> >        en Aplicacion_escritorio.formInicial.bot_validar_usuario_Click
> > (Object sender, EventArgs e) en C:\Documents and Settings\Abel\Mis
> > documentos\Visual Studio 2008\Projects\Aplicacion_escritorio
> > \Aplicacion_escritorio\PantallaInicial.cs:línea 76
> >       en System.Windows.Forms.Control.OnClick(EventArgs e)
> >       en System.Windows.Forms.Button.OnClick(EventArgs e)
> >        en System.Windows.Forms.Button.PerformClick()
> >       en System.Windows.Forms.Form.ProcessDialogKey(Keys keyData)
> >       en System.Windows.Forms.Control.ProcessDialogKey(Keys keyData)
> >       en System.Windows.Forms.Control.PreProcessMessage(Message& msg)
> >       en System.Windows.Forms.Control.PreProcessControlMessageInternal
> > (Control target, Message& msg)
> >       en
> > System.Windows.Forms.Application.ThreadContext.PreTranslateMessage
> > (MSG& msg)
> >       en
>
> > System.Windows.Forms.Application.ThreadContext.System.Windows.Forms.UnsafeNativeMethods.IMsoComponent.FPreTranslateMessage
> > (MSG& msg)
> >       en
>
> > System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop
> > (Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
> >       en
> > System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner
> > (Int32 reason, ApplicationContext context)
> >       en System.Windows.Forms.Application.ThreadContext.RunMessageLoop
> > (Int32 reason, ApplicationContext context)
> >       en System.Windows.Forms.Application.Run(Form mainForm)
> >       en Aplicacion_escritorio.Program.Main() en C:\Documents and
> > Settings\Abel\Mis documentos\Visual Studio 2008\Projects
> > \Aplicacion_escritorio\Aplicacion_escritorio\Program.cs:línea 18
> >       en System.AppDomain._nExecuteAssembly(Assembly assembly, String
> > [] args)
> >       en System.AppDomain.ExecuteAssembly(String assemblyFile,
> > Evidence assemblySecurity, String[] args)
> >       en
> > Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
> >       en System.Threading.ThreadHelper.ThreadStart_Context(Object
> > state)
> >       en System.Threading.ExecutionContext.Run(ExecutionContext
> > executionContext, ContextCallback callback, Object state)
> >       en System.Threading.ThreadHelper.ThreadStart()
> >  InnerException:
>
> > Mi archivo de configuración
>
> > <?xml version="1.0"?>
> > <configuration>
> >    <configSections>
> >      <section name="hibernate-configuration"
> > type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"/>
> >         <sectionGroup name="applicationSettings"
> > type="System.Configuration.ApplicationSettingsGroup, System,
> > Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
> >            <section name="Aplicacion_escritorio.Properties.Settings"
> > type="System.Configuration.ClientSettingsSection, System,
> > Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
> > requirePermission="false"/>
> >        </sectionGroup>
>
> >    </configSections>
>
> >  <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
> >    <session-factory>
> >      <!--
> >      <property name="format_sql">true</property>
> >      <property name="prepare_sql">true</property>-->
> >      <property name="connection.provider">
> >        NHibernate.Connection.DriverConnectionProvider
> >      </property>
> >      <property name="dialect">
> >        <!-- NHibernate.Dialect.MsSql2005Dialect -->
> >        NHibernate.Dialect.PostgreSQLDialect
> >      </property>
> >      <property name="connection.driver_class">
> >        <!-- NHibernate.Driver.SqlClientDriver -->
> >        NHibernate.Driver.OdbcDriver
> >      </property>
> >      <property name="connection.connection_string">
> >        <!-- Data Source=.\SQLEXPRESS;
> >        AttachDbFilename=|DataDirectory|\Tutorial.mdf;
> >        Integrated Security=True;
> >        User Instance=True -->
>
> > Dsn=PostgreSQL30;database=central;server=localhost;port=5432;uid=postgres;pass=admin;sslmode=disable;readonly=0;protocol=7.4-1;fakeoidindex=0;showoidcolumn=0;rowversioning=0;showsystemtables=0;fetch=100;socket=4096;unknownsizes=0;maxvarcharsize=255;maxlongvarcharsize=8190;debug=0;commlog=0;optimizer=1;ksqo=1;usedeclarefetch=1;textaslongvarchar=1;unknownsaslongvarchar=0;boolsaschar=1;parse=0;cancelasfreestmt=1;extrasystableprefixes=dd_;lfconversion=1;updatablecursors=1;disallowpremature=0;trueisminus1=0;bi=0;byteaaslongvarbinary=0;useserversideprepare=0;lowercaseidentifier=1;xaopt=1
>
> >      </property>
> >      <property name="show_sql">
> >        true
> >      </property>
> >      <property
>
> > name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory,
> > NHibernate.ByteCode.LinFu</property>
>
> >      <!--
> >      <property name="proxyfactory.factory_class">
> >        NHibernate.ByteCode.Castle.ProxyFactoryFactory,
> > NHibernate.ByteCode.Castle
> >      </property>
> >       -->
> >     </session-factory>
> >  </hibernate-configuration>
>
> >    <connectionStrings>
> >        <add
> > name="Aplicacion_escritorio.Properties.Settings.ConnectionString"
> > connectionString="Dsn=PostgreSQL30;uid=postgres;pwd=admin"
> > providerName="System.Data.Odbc"/>
> >    </connectionStrings>
> >  <runtime>
> >    <!--<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
> >                        <dependentAssembly>
> >                                <assemblyIdentity name="NHibernate"
> > publicKeyToken="AA95F207798DFDB4" culture="neutral"/>
> >                                <bindingRedirect
> > oldVersion="0.0.0.0-2.1.0.4000"
> > newVersion="2.1.0.4000"/>
> >                        </dependentAssembly>
> >                        <dependentAssembly>
> >                                <assemblyIdentity name="Castle.Core"
> > publicKeyToken="407DD0808D44FBDC" culture="neutral"/>
> >                                <bindingRedirect
> > oldVersion="0.0.0.0-1.1.0.0" newVersion="1.1.0.0"/
>
> >        <bindingRedirect oldVersion="0.0.0.0-1.1.0.0"
> > newVersion="2.1.0.4000"></bindingRedirect>
> >                        </dependentAssembly>
> >                </assemblyBinding>
> >         <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
> >                        <dependentAssembly>
> >                                 <assemblyIdentity name="Castle.Core"
> > publicKeyToken="407DD0808D44FBDC" culture="neutral"/>
> >                                 <bindingRedirect
> > oldVersion="0.0.0.0-1.1.0.0" newVersion="1.0.3.0"/
>
> >                        </dependentAssembly>
> >                </assemblyBinding>-->
> >  </runtime>
> > </configuration>
--~--~---------~--~----~------------~-------~--~----~
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