我登录了 facebook,如果用户不在我的数据库中,那么我在登录后添加他,但如果他已经存在,我不应该做任何事情。
我的问题是我应该如何处理它?
- 在添加之前对数据库进行一次查询以检查用户是否存在。
- 让 WCF 使用 UpdateException 捕获它,并将其扔给客户端。
- 其他选择?
我现在的代码:
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);
}
}