none
Error al intentar ingresar dato usando Entity Framework 4 RRS feed

  • Pregunta

  • Hola a todos.

    Tengo un pequeño (realmente pequeño), que me ha estado dando problemas estos días así que seré lo mas especifico posible.

    Empece con una aplicación en ASPX y C#, jTable (jTable) y mi DB en Mysql usando Entity Framework. Todo ha funcionando a la perfección tras aprender a usar jtable, mysql (primera vez que trabajo extensamente) y EF4. He podido listar mis datos, ingresarlos, actualizarlos y borrarlos en la jTable usando EF. Pero desgraciadamente no todo es perfecto he llegado a un problema con los tipos de dato Blob (mysql) y es el siguiente.

    Tengo una tabla en mysql la cual almacena los datos de los usuarios (id, nombre, nomusuario, etc) y un campo para password de tipo blob al importar mi tabla a EF esta se especifica como Binary (Mapeo de variables), ademas tengo un stored procedure que realiza el ABC del mantenimiento de los usuarios. El error llega cuando quiero ingresar un nuevo usuario ya que no puede realizar la conversion de String a Byte[], aunque lo he hecho mediante un Javascript, clave y metodo pero ninguno ha podido funcionar asi que me he quedado en blanco.

    "Mi codigo"

    [-] jTable

    <script type="text/javascript">
            $(document).ready(function () {
                idTabla = "#tablaUsuarios";
                $(idTabla).jtable({
                    title: 'Lista de Usuarios',
                    paging: true,
                    pageSize: 10,
                    gotoPageArea: 'none',
                    pageSizeChangeArea: false,
                    actions: {
                        listAction: '/Servicios/ebp_servicios.aspx/ListaUsuarios',
                        createAction: '/Servicios/ebp_servicios.aspx/CreaUsuarios',
                        updateAction: '/Servicios/ebp_servicios.aspx/ActualizaUsuarios'
                    },
                    fields: {
                        ID: {
                            key: true,
                            create: false,
                            edit: false,
                            list: false
                        },
                        ITM_ENTIDAD_ID: {
                            title: 'Entidad',
                            width: '15%',
                            options: '/Servicios/ebp_servicios.aspx/ListaEntidadesLE',
                            inputClass: 'validate[required]'
                        },
                        Rol: {
                            title: 'Rol',
                            width: '15%',
                            options: '/Servicios/ebp_servicios.aspx/ListaRolesLE',
                            inputClass: 'validate[required]'
                        },
                        Nombre: {
                            title: 'Nombre',
                            width: '20%',
                            inputClass: 'validate[required]'
                        },
                        Nick: {
                            title: 'Nick',
                            width: '15%',
                            inputClass: 'validate[required]'
                        },
                        Password: {
                            title: 'Contraseña',
                            list: false,
                            create: true,
                            edit: true,
                            inputClass: 'validate[required]'
                        },
                        Activo: {
                            title: 'Estado',
                            width: '15%',
                            defaultValue: 1,
                            type: 'radiobutton',
                            options: { '0': 'Inactivo', '1': 'Activo' },
                            inputClass: 'validate[required]'
                        }
                    },
                    formCreated: function (event, data) {
                        data.form.validationEngine({ promptPosition: "bottomRight: -170" });
                        data.form.validationEngine();
                    },
                    formSubmitting: function (event, data) {
                        return data.form.validationEngine('validate');
                    },
                    formClosed: function (event, data) {
                        data.form.validationEngine('hide');
                        data.form.validationEngine('detach');
                    }
                });
                $(idTabla).jtable('load');
            });
        </script>

    [-] Repositorio de la tabla

    public class Rep_Usuarios
        {
            public Int32 ID { get; set; }
            public String Nombre { get; set; }
            public String Nick { get; set; }
            public Byte[] Password { get; set; }
            public SByte Activo { get; set; }
            public Int32 ITM_ENTIDAD_ID { get; set; }
            public Int32 Rol { get; set; }
        }

    [-] Mis metodos (Select, Insert, Update) de los usuarios

    #region USUARIOS
    
            [WebMethod(EnableSession = true)]
            public static object ListaUsuarios(int jtStartIndex, int jtPageSize)
            { // Inicio del metodo web <ListaUsuarios>
    
                try
                {
                    itm_ebpBD = new itm_ebpEntities();
                    MySqlParameter opcionUsuarios = new MySqlParameter("opcion", MySqlDbType.VarChar); opcionUsuarios.Value = "SELUSR";
                    MySqlParameter indicePagina = new MySqlParameter("indicepagina", MySqlDbType.Int32); indicePagina.Value = jtStartIndex;
                    MySqlParameter tamanioPagina = new MySqlParameter("tamaniopagina", MySqlDbType.Int32); tamanioPagina.Value = jtPageSize;
    
                    int contarUsuarios = itm_ebpBD.itm_usuario.Count();
                    List<Rep_Usuarios> listarUsuarios = itm_ebpBD.ExecuteStoreQuery<Rep_Usuarios>("call spITM_MantUsuarios(@opcion, null, null, null, null, null, null, null, null, @indicepagina, @tamaniopagina)", opcionUsuarios, indicePagina, tamanioPagina).AsQueryable().ToList();
    
                    return new { Result = "OK", Records = listarUsuarios, TotalRecordCount = contarUsuarios };
                }
                catch (Exception ex)
                {
                    return new { Result = "ERROR", Message = ex.Message };  
                }
    
            } // Fin del metodo web <ListaUsuarios>
    
            [WebMethod(EnableSession = true)]
            public static object CreaUsuarios(itm_usuario record)
            { // Inicio del metodo web <CreaUsuarios>
    
                try
                {
    		itm_ebpBD = new itm_ebpEntities();
                    MySqlParameter opcionUsuario = new MySqlParameter("opcion", MySqlDbType.VarChar); opcionUsuario.Value = "CREUSUARIO";
                    MySqlParameter nombreUsuario = new MySqlParameter("nombreusr", MySqlDbType.VarChar); nombreUsuario.Value = record.Nombre;
                    MySqlParameter nickUsuario = new MySqlParameter("nickusr", MySqlDbType.VarChar); nickUsuario.Value = record.Nick;
                    MySqlParameter passwordUsuario = new MySqlParameter("passwordusr", MySqlDbType.Blob); passwordUsuario.Value = record.Password;
                    MySqlParameter activoUsuario = new MySqlParameter("activousr", MySqlDbType.Byte); activoUsuario.Value = record.Password;
                    MySqlParameter creadoUsuario = new MySqlParameter("creadoporusr", MySqlDbType.Int32); creadoUsuario.Value = -1;
                    MySqlParameter entidadUsuario = new MySqlParameter("entidadusr", MySqlDbType.Int32); entidadUsuario.Value = record.ITM_ENTIDAD_ID;
                    MySqlParameter rolUsuario = new MySqlParameter("rolusr", MySqlDbType.Int32); rolUsuario.Value = record.Rol;
    
                    var crearUsuario = itm_ebpBD.ExecuteStoreCommand("call spITM_MantUsuarios(@opcion, null, @nombreusr, @nickusr, @passwordusr, @activousr, @creadoporusr, @entidadusr, @rolusr, null, null)", opcionUsuario, nombreUsuario, nickUsuario, passwordUsuario, activoUsuario, creadoUsuario, entidadUsuario, rolUsuario);
                    itm_ebpBD.SaveChanges();
    
                    return new { Result = "OK", Record = crearUsuario };
                }
                catch (Exception ex)
                {
                    return new { Result = "ERROR", Message = ex.Message };
                }
            } // Fin del metodo web <CreaUsuarios>
    
            [WebMethod(EnableSession = true)]
            public static object ActualizaUsuarios(itm_usuario record)
            { // Inicio del metodo web <ActualizaUsuarios>
    
                try
                {
                    itm_ebpBD = new itm_ebpEntities();
    
                    MySqlParameter opcionUsuario = new MySqlParameter("opcion", MySqlDbType.VarChar); opcionUsuario.Value = "SELUSUARIO";
                    MySqlParameter nickUsuario = new MySqlParameter("nckusr", MySqlDbType.VarChar); nickUsuario.Value = record.Nick;
                    MySqlParameter activoUsuario = new MySqlParameter("actusr", MySqlDbType.Bit); activoUsuario.Value = record.Activo;
                    MySqlParameter passwordUsuario = new MySqlParameter("pass.usr", MySqlDbType.Blob); passwordUsuario.Value = record.Password;
                    MySqlParameter rolUsuario = new MySqlParameter("rolusr", MySqlDbType.Int32); rolUsuario.Value = record.Rol;
    
                    var actualizarUsuarios = itm_ebpBD.ExecuteStoreCommand("call spITM_MantUsuarios(@opcion, @idusuario, @nomusuario, @nickusuario, @passusuario, @actusuario, @rolusuario, null, null)", opcionUsuario);
    
                    itm_ebpBD.SaveChanges();
    
                    return new { Result = "OK" };
    
                }
                catch (Exception ex)
                {
                    return new { Result = "ERROR", Message = ex.Message };
                }
    
            } // Fin del metodo web <ActualizaUsuarios>
    
            #endregion
    Alguien puede darme una mano, se los agradecería bastante ya que este es el ultimo error por solucionar.


    Wixo

    jueves, 19 de marzo de 2015 6:21