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

Responder a