Cooperator Framework con ObjectDataSource
En asp.net 2.0 Al usar objectdatasources con los MapperWrapper del cooperator, los métodos de Insert y Save del MapperWrapper de Cooperator vinculados al objectdatasource no tiene en cuenta los nuleables en los parámetros , y sucede que por ejemplo:
- enteros nuleables no los considera como tal entonces cuando son null los convierte a 0, ni hablar del problema que genera cuando es ese entero es una clave foránea que acepta null: Instrucción INSERT en conflicto con la restricción FOREIGN KEY "FK_Ciudad_Persona". El conflicto ha aparecido en la base de datos "BaseDev", tabla "dbo.Persona", column 'CiudadID'.
- fechas nuleables no las considera como tales entonces cuando son null las pone como DateTime.MinValue y provoca la excepción: System.Data.SqlTypes.SqlTypeException: Desbordamiento de SqlDateTime. Debe estar entre 1/1/1753 12:00:00 AM y 12/31/9999 11:59:59 PM.
Voy a intentar explicar que es lo que hice para solucionar (momentáneamente?) el problema. Tomo como ejemplo una de las tablas que tengo que se llama Persona. Para dicha tabla Genera una entidad Personas y la correspondiente capa de datos donde encontramos, para nuestro ejemplo PersonaMapper.cs y su archivos asociado PersonaMapper.Auto.cs. Dentro del archivo PersonaMapper.Auto.cs tengo 3 clases:
- public partial class PersonaMapper
- public class PersonaMapperWrapper
- public partial class PersonaLoader
Perticularmente me interesa la segunda public class PersonaMapperWrapper, y lo que hago es ponerla como clase parcial public partial class PersonaMapperWrapper para poder agregar mis propios métodos y poder consumirlos desde mi objectdatasource.
Bien, ahora voy al archivo PersonaMapper.cs y tengo que agregar la misma clase parcial public partial class PersonaMapperWrapper e implementar mis propios métodos con los parámetros correspondientes como nuleables.
Como los archivos .auto son generados por Cooperator tenemos que modifcar el archivo Templates\CSharpClasses\Mapper.Auto.cs poniendo como parcial (Partial) a la clase MappetWrapper.
Agradezco el aporte de Rubén, José, Lautaro y Cris.
Cualquier novedad seguiremos postenado. Saludos ;)