none
Insertar registro a una tabla con campos default desde web services RRS feed

  • Pregunta

  • Buen día.

    Necesito ayuda, resulta que tengo un web services que se conecta a SQL Server 2017 usando Entity Framework. pues tengo una tabla Cargos y esta tabla tiene entre sus campos uno que tiene la propiedad default 1 not null.

    Al querer hacer una inserción de a dicha tabla, envío los valores de los demás campos pero no del campo con propiedad default (pues se supone que al no recibir campo, automáticamente obtendrá el valor de 1), pero el resultado me da error pues me dice que el campo en cuestión no acepta valor nulo.

    El siguiente código es del método que realiza la tarea de inserción.

     [WebMethod]
            public bool AddCargoEmpleado(string nombre_cargoempleado, string descripcion_cargoempleado)
            {
                //crear el objeto de la entitdad y setear los datos con los parametros recibidos
                CargoEmpleado nuevoitem = new CargoEmpleado
                {
                    nombre_cargoEmpleado = nombre_cargoempleado,
                    descripcion = descripcion_cargoempleado,
                    //activo = true
                };

                //añadir el objeto al entity set
                rs.CargoEmpleado.Add(nuevoitem);

                //capturar el valor de retorno  de la operacion, si es mayor que 0 la operacion fue exitosa
                bool resultado = (rs.SaveChanges())> 0 ? true : false;

                return resultado;
            }

    El campo llamado activo es el campo en cuestión que me está dando problemas. Por el momento le mando seteado el valor true pues el valor por default declarado en la base de datos.

    Saludos y gracias de ante mano

    lunes, 11 de noviembre de 2019 0:46

Todas las respuestas

  • hola

    >>Al querer hacer una inserción de a dicha tabla, envío los valores de los demás campos pero no del campo con propiedad default

    si realizas este INSERT desde el management studio conectandote a la db directamente, te toma el valor por defecto ?

    porque puede que pienses que esta aplicando este pero en realidad no lo hace y no es problema del codigo, sino de la definicion en la tabla

    >>pero el resultado me da error pues me dice que el campo en cuestión no acepta valor nulo.

    pero defines esa propiedad como

    public bool? activo {get;set;}

    How can set a default value constraint with Entity Framework 6 Code First?

    No mencionas que version de EF estas utilizando

    - si es EF Core este tiene el HasDefaultValue()

    - si es EF 6 podrias asignar el valor por defecto cuando instancias la clase

    public class CargoEmpleado{ public CargoEmpleado(){ this.activo = true; } public bool activo {get;set;}

    //otras propiedades }



    asi ya tendra el true de forma automatica

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 11 de noviembre de 2019 1:45