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 -~----------~----~----~----~------~----~------~--~---
