En ese script falta un pedazo, porque el mensaje dice bien claro: Cannot insert duplicate key row in object 'Clientes' with unique index 'IX_Clientes'
Es decir que estas violando la unicidad de ese índice. De un vistazo, es probable que el índice sea sobre el campo Codigo, pero averigualo. Diego 2010/1/18 Raul Lopez <[email protected]> > Hola, estoy interactuando con una base de datos que tiene algunas tablas > que ya estaban creadas (son utilizadas por otras aplicaciones ya existentes > en la empresa sin ORM). > > En una de esas tablas, al insertar un registro, > me permite hacerlo en la primera oportunidad (tabla vacia), pero al > intentar insertar un segundo registro genera el siguiente error: > > NHibernate.Exceptions.GenericADOException: could not insert: > [RecursosHumanos.Domain.Cliente][SQL: INSERT INTO > NombreDeLaEmpresa.dbo.Clientes (Codigo, Ejecutable, Tipo, RUC, Nombre, > Domicilio, Mail, Contacto, Telefono, Fax) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, > ?); select SCOPE_IDENTITY()] ---> System.Data.SqlClient.SqlException: Cannot > insert duplicate key row in object 'Clientes' with unique index > 'IX_Clientes'. > The statement has been terminated. > en System.Data.SqlClient.SqlConnection.OnError(SqlException exception, > Boolean breakConnection) > en System.Data.SqlClient.SqlInternalConnection.OnError(SqlException > exception, Boolean breakConnection) > en > System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject > stateObj) > en System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand > cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet > bulkCopyHandler, TdsParserStateObject stateObj) > en System.Data.SqlClient.SqlDataReader.ConsumeMetaData() > en System.Data.SqlClient.SqlDataReader.get_MetaData() > en System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, > RunBehavior runBehavior, String resetOptionsString) > en System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior > cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) > en System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior > cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, > DbAsyncResult result) > en System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior > cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) > en System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior > behavior, String method) > en System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior > behavior) > en System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader() > en NHibernate.AdoNet.AbstractBatcher.ExecuteReader(IDbCommand cmd) > en > NHibernate.Id.IdentityGenerator.InsertSelectDelegate.ExecuteAndExtract(IDbCommand > insert, ISessionImplementor session) > en > NHibernate.Id.Insert.AbstractReturningDelegate.PerformInsert(SqlCommandInfo > insertSQL, ISessionImplementor session, IBinder binder) > --- Fin del seguimiento de la pila de la excepción interna --- > > > El script con el que generaron la tabla es: > > SET ANSI_NULLS ON > GO > > SET QUOTED_IDENTIFIER ON > GO > > CREATE TABLE [dbo].[Clientes]( > [IdCuenta] [int] IDENTITY(1,1) NOT NULL, > [Codigo] [nvarchar](50) NOT NULL, > [Ejecutable] [bit] NOT NULL, > [Tipo] [int] NOT NULL, > [RUC] [nvarchar](50) NULL, > [Nombre] [nvarchar](50) NOT NULL, > [Domicilio] [nvarchar](50) NULL, > [Mail] [nvarchar](50) NULL, > [Contacto] [nvarchar](50) NULL, > [Telefono] [nvarchar](50) NULL, > [Fax] [nvarchar](50) NULL, > [ActualizadoTS] [timestamp] NULL, > CONSTRAINT [PK_Clientes] PRIMARY KEY CLUSTERED > ( > [IdCuenta] ASC > )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = > OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON > [PRIMARY] > ) ON [PRIMARY] > > GO > > ALTER TABLE [dbo].[Clientes] ADD CONSTRAINT [DF_Clientes_Ejecutable] > DEFAULT (1) FOR [Ejecutable] > GO > > ALTER TABLE [dbo].[Clientes] ADD CONSTRAINT [DF_Clientes_Tipo] DEFAULT > (0) > FOR [Tipo] > GO > > > > El mapping que yo estoy usando: > > <?xml version="1.0" encoding="utf-8" ?> > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" > assembly="RecursosHumanos.Domain" namespace="RecursosHumanos.Domain"> > <class name="Cliente" table="Clientes"> > > <id name="IdCuenta" column="IdCuenta" type="Int32" > unsaved-value="0"> > <generator class="identity"/> > </id> > <property column="Codigo" type="String" name="Codigo" > not-null="true" length="50" /> > <property column="Ejecutable" type="Boolean" > name="Ejecutable" not-null="true" /> > <property column="Tipo" type="Int32" name="Tipo" > not-null="true" /> > <property column="RUC" type="String" name="Ruc" length="50" > /> > <property column="Nombre" type="String" name="Nombre" > not-null="true" length="50" /> > <property column="Domicilio" type="String" name="Domicilio" > length="50" /> > <property column="Mail" type="String" name="Mail" > length="50" /> > <property column="Contacto" type="String" name="Contacto" > length="50" /> > <property column="Telefono" type="String" name="Telefono" > length="50" /> > <property column="Fax" type="String" name="Fax" length="50" > /> > </class> > </hibernate-mapping> > > > Esto sucede en el servidor remoto, ya que en mi maquina anda bien. > > Desde ya agradezco cualquier aporte. > > Saludos, > Raul. > > -- > 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
