防止重复用户被添加到数据库

本文关键字:添加 数据库 用户 复用 | 更新日期: 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查询时捕获违反该约束的异常。

防止重复用户被添加到数据库