Q:

¿Problema al actualizar C# entityframework jquery?

tengo una consulta y es la siguiente:
Realice una inserción a la base datos usando EntityFramework y JQuery. El problema es que después de insertar,realizo una actualización y actualiza los valores por los nuevos enviados pero los demás que no se llenaron los reemplaza por null en base de datos.
Un caso es que al registrar se guarda los campos nomRuma,UsuarioCreacion,estado. Y al actualizar ese registro actualizo nomRuma,UsuarioModificacion,estado, y el problema es que UsuarioCreacion que anteriormente se registro se pone en la base de datos como null.
registrarRuma: function () {

            var desc = $("#txtDescripcionDet").val();
            var user = "userCreacion";

            if (desc == "") {
                toastr.warning("Complete todos los campos", "Advertencia", { timeOut: 3000 });
                return;
            }

            //valores que se enviarán a insertar
            var objRuma = {
                nomRuma: desc,
                UsuarioCreacion: user,
                estado:1
            };

            $.ajax({
                url: "./Ruma/insertarRuma",
                type: 'POST',
                dataType: "json",
                data: { ruma: objRuma },
                success: function (json) {
                    console.log("Se registro correctamente")
                    metodoRuma.show_alert("success", "Se registro correctamente");
                    $("#ModalRuma").modal("hide");
                    metodoRuma.listaTotalRuma();
                }, error: function (err) {
                    console.log(err)
                }
            });

        },

Metodo actualizar
actualizarRuma: function () {

            var codigo = $("#txtCodigoDet").val();
            var desc = $("#txtDescripcionDet").val();
            var estado = $("#txtEstadoDet").val();
            var userMod = "UserMod";

            if (desc == "") {
                toastr.warning("Complete todos los campos", "Advertencia", { timeOut: 3000 });
                return;
            }

            //valores que se enviarán a actualizar
            var objRumaMod = {
                codRuma: codigo,
                nomRuma: desc,
                UsuarioModificacion: userMod,
                estado: estado
            };

            Swal.fire({
                title: '¿Estas Seguro?',
                text: "No podrás revertir esto!",
                icon: 'warning',
                showCancelButton: true,
                confirmButtonColor: '#3085d6',
                cancelButtonColor: '#d33',
                confirmButtonText: 'Si, actualizalo!'
            }).then((result) => {
                if (result.value) {
                    $.ajax({
                        url: "./Ruma/actualizarRuma",
                        type: 'POST',
                        dataType: "json",
                        data: { ruma: objRumaMod},
                        success: function (json) {
                            console.log("Se actualizo ruma");

                            $("#ModalRuma").modal("hide");
                            metodoRuma.listaTotalRuma();
                        }, error: function (err) {
                            console.log(err);
                        }
                    });
                    Swal.fire(
                        'Actualizado!',
                        'El registro ha sido Actualizado.',
                        'success'
                    )
                }
            })

        },

Métodos de mi repositorio
        public T Agregar(T entidad)
        {
            return this._db.Set<T>().Add(entidad);
        }

        public void Editar(T entidad)
        {
            this._db.Entry(entidad).State = EntityState.Modified;
        }
        public void Guardar()
        {
            this._db.SaveChanges();
        }

Los campos que no se llenan al actualizar los reemplaza con null.

A:

Si envias actualizar menos cantidad de campos de lo que tienes la entidad vas a tener que recuperarla primero, completar los campos que quieras actualizar y recien alli confirmar la operacion
No funciona si tienes una entidad con informacion diferente y le cambias el state a Modified, debes hacer la asignacion de los cambios
[HttpPost]
public ActionResult actualizarRuma(Ruma entity){

     //recuperas la entidad que lleva para actualizar por Id
     var ruma = repo.ObtenerPorId(entity.Id); 

     //asignas los campos que quieres modificar
     ruma.nomRuma = entity.nomRuma;
     ruma.UsuarioCreacion= entity.UsuarioCreacion;
     ruma.estado= entity.estado;

     //aplicas la actualizacion
     repo.Editar(ruma);
     repo.Save();
}

