none
retornoar valor inteiro no entity framework RRS feed

  • Pergunta

  • olá amigos,

    Seguinte, tenho uma procedure que retorna um valor:

    create procedure STP_VALIDA_USUARIO
    (
    @login varchar(50),
    @senha varchar(50)
    )
    as
    begin
    select count(*)
    from USUARIO
    where nm_login = @login
    and cd_senha = @senha
    and ds_status = 'True'
    end

    Utilizo esta procedure para validar se o usuário existe, caso exista, libero a página defult pra ele (validação de login e senha).

    No código C#, vou comparar: se o valor retornado for = 1, libero a página, caso contrario peço para inserir usuario e senha novamente.

    Duvida: como posso fazer para que seja retornado esse valor no Entity framework ?

    Para realizar outras consultas e alteração consigo numa boa, nsou novo com entity framework, comecei a estudar essa ferramenta há 2 dias.

    Já aproveitando, como posso fazer para retornar um datatable, é outra dificuldade que estou tendo.

    Fucei muito na net mas não achei nada que resolva ao menos um desses problemas.

    Desde já agradeço pela atenção e ajuda.

    quinta-feira, 14 de março de 2013 00:35

Todas as Respostas

  • Olá Jonathan.

    Até onde reparei, você está dizendo que está usando EF, entretanto percebe-se que você não está utilizando o "poder" que ele tem a seu favor.

    Não sei se usar essa procedure foi uma decisão do projeto/equipe, mas há formas melhores de trabalhar e ainda solucionar esse problema que você relatou.

    Se você está utilizando Edmx, você pode arrastar essa procedure para o Edmx e acessar utilizando o contexto.
    Exemplo:

    SeuContexto db = new SeuContexto();
    var retorno = db.STP_VALIDA_USUARIO("o login", "a senha");

    No mesmo cenário - utilizando Edmx - você pode adicionar a tabela USUARIO pro diagrama (edmx) e usar:
    SeuContexto db = new SeuContexto();
    var usuario = db.Usuario.FirstOrDefault(e => e.login == "o login" && e.senha == "a senha");
    if (usuario == null) //invalido
    else //valido

    Caso esteja utilizando Code First você pode usar igual o mesmo código.


    Att.,
    Nelson.

    quinta-feira, 14 de março de 2013 03:44
  • Segue:

    var login = new SqlParameter("@login", "Jonathan");
    var senha = new SqlParameter("@senha", "123");

    var n = SeuContexto.Database.SqlQuery<int>("STP_VALIDA_USUARIO @login, @senha",login,senha).FirstOrDefault();


    Spartans! Tonight we dine in Hell!

    quinta-feira, 14 de março de 2013 11:40