0

我登录了 facebook,如果用户不在我的数据库中,那么我在登录后添加他,但如果他已经存在,我不应该做任何事情。

我的问题是我应该如何处理它?

  1. 在添加之前对数据库进行一次查询以检查用户是否存在。
  2. 让 WCF 使用 UpdateException 捕获它,并将其扔给客户端。
  3. 其他选择?

我现在的代码:

private async void OnUserInfoChanged(object sender, UserInfoChangedEventArgs e)
{
    DbClient client = new DbClient(); //wcf service

    if (loginButton.CurrentSession != null)
    {
        localSettings.Values["facebookId"] = loginButton.CurrentSession.FacebookId;
        localSettings.Values["UserName"] = loginButton.CurrentUser.Name;

        if (!(await client.IsUserExistsAsync(loginButton.CurrentSession.FacebookId)))
        {
            try
            {
                await client.AddUserAsync(new User() { FacebookId = loginButton.CurrentSession.FacebookId, UserName = loginButton.CurrentUser.Name });
            }
            catch (FaultException<ValidationFault> validationFault)
            {
                Messages.ShowMessage(string.Format("{0}. Details:\n{1}",
                                                         validationFault.Detail.Issue, validationFault.Detail.Details),
                                                        "Validation problem");
            }
            catch (Exception ex)
            {
                Messages.ShowMessage(ex.Message);
            }
        }

        this.Frame.Navigate(typeof(MainPage));
    }
}

和 WCF:

public User AddUser(User user)
{
    Validate<User, User.UserMetadata>(user); //Throws fault exception if not valid.

    try
    {
        IUserRepository _user = new UserRepository();
        return _user.Add(user);
    }
    catch (UpdateException ex)
    {
        throw new FaultException(ex.Message);
    }
    catch (Exception ex)
    {
        throw new FaultException(ex.Message);
    }
}
4

0 回答 0