none
Como guardar cadenas de 8000 caracteres SQL EXPRESS 2018, en la BBDD me deja pero no en la aplicación. RRS feed

  • Pregunta

  • Bueno me explico, necesito que la gente publique noticias desde un formulario. Me veo que cuando el texto de la noticia es muy grande da el siguiente error:Error de validación para una o varias entidades. Vea la propiedad 'EntityValidationErrors' para obtener detalles.

    Sin embargo si meto ese mismo dato directamente en la BBDD SQLEXPRESS 2012 no me da error (varchar8000).
    Los campos de mi NoticiaViewModel donde recogo el contenido de la noticia es

            [Required(ErrorMessage = "*Texto de noticia obligatorio")]
            [MaxLength(8000,ErrorMessage="Número máximo de caracteres es de 8000")]
            [AllowHtml] //Esto lo pongo para coger bien el texto como si fuera HTML del ckEditor
            public string textoNoticia { get; set; }

    Y mi modelo de datos Noticia lo tengo sin anotaciones
    public string textoNoticia { get; set; }

    Alguna idea de como hacerlo sin problema? Estoy usando MVC3,  VISUAL STUDIO 2012 y SQLSERVER 2012. Lo que necesito es guardar noticias amplias en la BBDD siempre de texto que viene recogido de un "ckEditor" como véis aquí

    @model _16cuerdas.Models.ViewModels.NoticiaViewModel

    <script type="text/javascript">  window.onload = function ()

      {    
          CKEDITOR.replace('textoprueba', { toolbar: 'Basic' });
      }; </script>

                @Html.Label("Texto de la Noticia")  <br />
                @Html.TextAreaFor(Model => Model.textoNoticia, new { @class = "ckeditor" });
                @Html.ValidationMessageFor(model => model.textoNoticia)  

    Muchas gracias a todos de antemano.

    jueves, 10 de julio de 2014 9:22

Todas las respuestas

  • he conseguido capturar la excepción y me dice esto

    ErrorMessage = "El campo textoNoticia debe ser del tipo matriz o cadena, con una longitud máxima de '4000'."

    Sin embargo yo en mi VIEWMODEL pongo
            [MaxLength(8000,ErrorMessage="Número máximo de caracteres es de 8000")]
            [AllowHtml] //Esto lo pongo para coger bien el texto como si fuera HTML del ckEditor
            public string textoNoticia { get; set; }

    :(

    jueves, 10 de julio de 2014 9:32
  • hola

    pero si quieres guardar notas porque usas el varchar ahi esta el problema, usa el ntext

    por supuesto despues quitas la validacion

    o quizas si viene del ckeditor guardarla con el tipo de dato xml (porque en definitiva el html de la noticia es xml)

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 10 de julio de 2014 11:20
  • Gracias Leandro. Uso varchar porque leo que text está descatalogado o no está recomendado. No es así?

    No obstante creo que lo he solucionado con varchar(MAX) y luego poniendo la anotación a mi modelo de [MaxLength]

    jueves, 10 de julio de 2014 11:59
  • Uso varchar porque leo que text está descatalogado o no está recomendado. No es así?

    hasta donde se no

    quizas podrias realizar la consulta en el foro de sql server

    validaste cual es la capacidad maxima del MAX ?

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 10 de julio de 2014 13:31
  • Había escuchado que estaba DEPRECATED :)

    Sr. Tuttini, el campo text es más amplio que un varchar? Se trata igual luego desde C# como un string?

    Muchas gracias por todo.

    viernes, 11 de julio de 2014 9:12
  • >>el campo text es más amplio que un varchar?

    se que se usan para objetivos diferentes, aunque ahora con el varchar(max) seguro la situacion cambio

    la verdad no habia escuchado que estaba obsoleto y no se recomendaba utilizar, pero se podria validar en el foro de sql server

    >>Se trata igual luego desde C# como un string?

    si es correcto en .net sigue como string

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 11 de julio de 2014 12:12
  • Buenas!

    Sí, TEXT está descatalogado:

    ntext text, and image data types will be removed in a future version of Microsoft SQL Server. Avoid using these data types in new development work, and plan to modify applications that currently use them

    http://msdn.microsoft.com/es-es/library/ms187993.aspx

    Saludos!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis


    lunes, 14 de julio de 2014 12:48