887 messaggi dal 21 marzo 2008
Ciao a tutti
Premessa: prima volta che uso EF.
Ho scritto il seguente codice per recupera i dati di un utente da varie tabelle(aspnet_Users, aspnet_Memebership e UserProfile):

public static tipoUser User(Guid UserId)
{
IQueryable query;
using (mcEntities context = new mcouponEntities())
{
query =
from u in context.aspnet_Users
join m in context.aspnet_Membership on u.UserId equals m.UserId
join up in context.UsersProfile on u.UserId equals up.UserId
where u.UserId == UserId
select new tipoUser
{
UserId = u.UserId.ToString(),
IsApproved = m.IsApproved,
Nome = up.Name,
Cognome = up.Surname,
CognomeNome = string.Concat(up.Surname, up.Name),
Username = u.UserName,
Password = m.Password,
Email = m.Email
};
}

return (tipoUser) query;
}

Domanda:Come faccio a controllare se il codice mi restituisce un risultato o se non esiste nessun utente con un dato UserId? è corretto scrivere così o c'è un modo per migliorare il codice?

Grazie mille
193 messaggi dal 05 novembre 2009
Io farei una cosa del genere:
  public static tipoUser User(Guid UserId)
        {
          
          using (mcEntities context = new mcouponEntities())
          {
            var query =
            (from u in context.aspnet_Users
            join m in context.aspnet_Membership on u.UserId equals     m.UserId
            join up in context.UsersProfile on u.UserId equals up.UserId
            where u.UserId == UserId
            select new tipoUser
            {
              UserId = u.UserId.ToString(),
              IsApproved = m.IsApproved,
              Nome = up.Name,
              Cognome = up.Surname,
              CognomeNome = string.Concat(up.Surname, up.Name),
              Username = u.UserName,
              Password = m.Password,
              Email = m.Email
            }).FirstOrDefault();

            return query;
          }
         
        }



Per come hai impostato il metodo questo controllo potresti farlo dove il metodo viene chiamato, visto che deve restituire un oggetto tipoUser puoi recuperare UserId e controllare che sia valorizzato.

Spero di aver capito e di esserti stato utile

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.