防止重复用户被添加到数据库
本文关键字:添加 数据库 用户 复用 | 更新日期: 2023-09-27 18:09:47
我想阻止同一用户被自动添加到数据库中。我想检查这对我的数据库中的FacebookID
字段/列集。我该怎么做呢?下面是代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MVCFacebookTestApp.Models;
using Facebook;
using Facebook.Web;
namespace MVCFacebookTestApp.Controllers
{
public class HomeController : Controller
{
public FacebookSession FacebookSession
{
get { return (FacebookWebContext.Current.Session); }
}
public ActionResult Index()
{
string request = Request.Form["signed_request"];
string accessToken = "";
if (Request.Form["access_token"] != null)
{
accessToken = Request.Form["access_token"];
}
FacebookApplication app = new FacebookApplication();
FacebookSignedRequest result = FacebookSignedRequest.Parse(app.InnerCurrent, request);
if (String.IsNullOrWhiteSpace(accessToken))
{
accessToken = result.AccessToken;
}
dynamic data = result.Data;
bool liked = data.page.liked;
//bool liked = true;
if (!liked)
{
Home h = Home.NotLiked();
return View(h);
}
else
{
Home h = Home.Liked();
FacebookWebClient fb = null;
if (String.IsNullOrWhiteSpace(accessToken))
{
var fbRequest = FacebookWebContext.Current;
if (fbRequest.IsAuthorized())
fb = new FacebookWebClient(fbRequest);
accessToken = fbRequest.AccessToken;
}
else
{
fb = new FacebookWebClient(accessToken);
}
if (fb != null)
{
dynamic r = fb.Get("/me");
//h.TestString2 += " Ha! We captured this data about you!";
//h.TestString2 += " Name: " + r.name;
//h.TestString2 += " Location: " + r.location;
//h.TestString2 += " Birthday: " + r.birthday;
//h.TestString2 += " About Me: " + r.aboutme;
//h.ImgUrl = "http://graph.facebook.com/" + r.id + "/picture?type=large";
//string fqlResult = "";
//var fbApp = new FacebookClient(accessToken);
//basic fql query execution
//dynamic friends = fbApp.Query("SELECT uid FROM page_admin WHERE page_id='160828267335555'");
//SELECT uid FROM page_fan WHERE page_id = 160828267335555
//"SELECT uid FROM page_fan WHERE uid=me() AND page_id=<your page id>";
//loop through all friends and get their name and create response containing friends' name and profile picture
//foreach (dynamic friend in friends)
//{
// fqlResult += friend.uid + ".... ";
// //fqlResult += friend.name + "<img src='" + friend.pic_square + "' alt='" + friend.name + "' /><br />";
//}
h.AddUser(r.id, accessToken, r.first_name, r.last_name, DateTime.ParseExact(r.birthday, "MM/dd/yyyy", new System.Globalization.CultureInfo("en-GB")), r.email, DateTime.Now, r.gender, "http://graph.facebook.com/" + r.id + "/picture?type=large");
//ViewBag.Likes = fqlResult;
}
else
{
//Display a message saying not authed....
}
// if statement to stop same user from being added to the database...
if ()
{
//condition here
}
else
{
//condition here
}
return View(h);
}
}
}
}
我正在使用if else if和else语句尝试这种方式。
var User = SELECT from User WHERE FBID = FBID();
if (User.Count==0)
{
User.AddUser(facebookID as string, accessToken as string, fName as string, lName as string, dob as DateTime, email as string, dateLiked as DateTime, gender as string, imageURL as string); //Create newUser
}
else if (User.Count ==1)
{
//set properties to User[0]
}
else
{
// THROW EXCEPTION
}
这些是我创建的数据库的属性;
//public string UserID { get; set; }
public string FBID { get; set; }
public string AccessToken { get; set; }
public string FName { get; set; }
public string LName { get; set; }
public string Gender { get; set; }
public DateTime DOB { get; set; }
public string Email { get; set; }
public DateTime DateLiked { get; set; }
public string ImageURL { get; set; }
//public string TestString { get; set; }
//public string TestString2 { get; set; }
public bool IsLiked { get; set; }
//public string ImgUrl { get; set; }
public void AddUser (string facebookID, string accessToken, string fName, string lName, DateTime dob, string email, DateTime dateLiked, string gender, string imageURL)
{
//UserID = userID;
FBID = facebookID;
AccessToken = accessToken;
FName = fName;
LName = lName;
DOB = dob;
Email = email;
DateLiked = dateLiked;
Gender = gender;
ImageURL = imageURL;
User newUser = new User();
Entities newContext = new Entities();
//newUser.UserID = 1;
newUser.FacebookID = facebookID;
newUser.AccessToken = accessToken;
newUser.FName = fName;
newUser.LName = lName;
newUser.Gender = gender;
newUser.DOB = DOB;
newUser.Email = email;
newUser.DateLiked = dateLiked;
newUser.ImageURL = imageURL;
newContext.Users.AddObject(newUser);
newContext.SaveChanges();
}
}
}
我希望这是有意义的,新来的,所以对我放轻松。div =) 为了保持数据库的完整性,您应该在数据库中为该列添加一个唯一的约束,然后在执行UPDATE/INSERT查询时捕获违反该约束的异常。