0

私はFacebookにログインしており、ユーザーがDBにない場合は、ログイン後に追加しますが、すでに存在する場合は何もしないでください。

私の質問は、どのように対処すればよいですか?

  1. ユーザーを追加する前に、ユーザーが存在するかどうかを確認するDBへのクエリをもう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