none
ERROR "Los datos de cadena o binarios se truncarían. Se terminó la instrucción"

    Question

  • Buenos dias comunidad un saludo para todos...quisiera comentarles acerca del siguiente inconveniente que se me presento .....tengo la siguiente entidad llamada GRUPOS con dos atributos que van de la siguiente manera

     

    Codigo ....: hasta 5 caracteres 

    Nombre..... : hasta 8 caracteres

     

    cuando creo el objeto le asigno los siguiente valores 

     

    Codigo="123456789"

    Nombre="GRUPOUNO"

    cuando realizo el respectivo savechanges y este se encuentra dentro de un try catch el error encontrado es "Los datos de cadena o binarios se truncarían.

    Se terminó la instrucción"  quisiera saber si se puede de alguna forma saber especificamente en el error que es por campo Codigo que se esta excediendo en

    su tamaño.

    con esa excepcion se que es por que me he excedido en el tamaño de algun campo pero podria saber de cual exactamente ???

     

    Muchas Gracias comunidad .. ;)


    oscar ivan sierra jaramillo
    • Moved by Willy TaverasModerator Thursday, March 31, 2011 8:14 PM La pregunta pertenece al área de Desarrollo. (De:SQL Server)
    Thursday, March 31, 2011 3:54 PM

Answers

  • esta misma pregunta se realizo en el for de vb.net

    http://social.msdn.microsoft.com/Forums/es-ES/vbes/thread/b776fb26-48b2-4510-a473-8ccbbb58809d

     

    transcribo aqui la ultima respuesta:

    el tema es que hay validaciones que debes hacer en mas de una capa

    o sea en este caso puntual debes en el rpesenrtacion limitar el tamaño maximo del campo, pero en la capa de negocio antes de invocar a la de persistencia debes validar que no se supere el maximo definido

    si se que es trabajoso epro es asi como se hace mas cuando usas servicio porque no sabes quien puede invocarlos, en este caso es tu aplicacion pero en el futuro puede que abras la comunicacion con terceros y ahi el limite del campo puede no tenerse en cuanta, por eso tu logica de negocio deberia ser indestructible aplciando la maxima cantida de validaciones que puedas conocer

    el resto es lofico que seran exceptions no contraladas

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Thursday, March 31, 2011 8:35 PM

All replies

  • Bueno, en tu ejemplo está claro que el error se debe al valor de "Codigo", el cual excede los 5 caracteres máximos de longitud que has establecido.

    Si a lo que te refieres es cuando hay varios campos y necesitas saber por cuál se debe el error, la respuesta es que no se puede... el mensaje simplemente indica que no se puede almacenar los datos porque algo ha excedido el tamaño máximo.

     

    Thursday, March 31, 2011 4:06 PM
  • pero si estoy trabajando en una aplicacion n capas y haciendo uso de WCF para que la aplicacionsea distribuida y hago esa validacion en la capa de acceso a datos bajara el performance de mi aplicacion  ya que el objeto tendra que viajar por la red y si hay un campo excedido se ira devuelta y esto tomara mas tiempo ahora el de la capa de cliente es el que tiene que asegurar que el valor salga correctamente de su capa ?

     

    Muchas gracias


    oscar ivan sierra jaramillo
    Thursday, March 31, 2011 4:37 PM
  • Me parece que la cuestión que estás planteando es más de desarrollo que de SQL Server. Deberías preguntar en el foro de .NET para que te aconsejen mejor
    Thursday, March 31, 2011 4:45 PM
  • Si muevelo Muchas gracias amigo!!!!

     

    Hasta pronto!!!


    oscar ivan sierra jaramillo
    Thursday, March 31, 2011 8:13 PM
  • Hola, estoy de acuerdo con lo que dice el amigo Willy. . . pues la validacion la puedes hacer en la capa de presentacion, si no se cumple la condicion, el objeto no viaja por las otras capas. . .

    Saludos.


    Nicolás Herrera
    Bogotá - Colombia
    BogotaDotNet
    "Daría todo lo que sé, por la mitad de lo que ignoro." Rene Descartes
    Thursday, March 31, 2011 8:24 PM
  • Hola amigo

    Entiendo que estas pasando un valor superior al limite establecido, deberías validar ambos campos antes de acceder a la BD o hacer algo mas, puedes usar eventos, supongo que estas usando textBox (leave(validas cuando sale del textbox),keypress(cuentas la cantidad de caracteres mientras se escriben y si lo deseas evitas que se escriban mas, siempre alertando al usuario))... o directamente validalo todo en el botón al hacer click y si algo falla no avanzas, sino que alertas del error y permites que se corrija para continuar.... seria útil si describes el diseño que tienes. Saludos


    Thursday, March 31, 2011 8:25 PM
  • esta misma pregunta se realizo en el for de vb.net

    http://social.msdn.microsoft.com/Forums/es-ES/vbes/thread/b776fb26-48b2-4510-a473-8ccbbb58809d

     

    transcribo aqui la ultima respuesta:

    el tema es que hay validaciones que debes hacer en mas de una capa

    o sea en este caso puntual debes en el rpesenrtacion limitar el tamaño maximo del campo, pero en la capa de negocio antes de invocar a la de persistencia debes validar que no se supere el maximo definido

    si se que es trabajoso epro es asi como se hace mas cuando usas servicio porque no sabes quien puede invocarlos, en este caso es tu aplicacion pero en el futuro puede que abras la comunicacion con terceros y ahi el limite del campo puede no tenerse en cuanta, por eso tu logica de negocio deberia ser indestructible aplciando la maxima cantida de validaciones que puedas conocer

    el resto es lofico que seran exceptions no contraladas

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Thursday, March 31, 2011 8:35 PM