如果不存在则插入,使用自动增量主键。 MVC3

时间:2012-06-18 07:07:50

标签: .net asp.net-mvc-3 insert primary-key auto-increment

我遇到自动增量主键问题..

当我将学生添加到我的数据库时,我可以一遍又一遍地添加同一个学生,因为学生的主键是自动增量的,所以它当然不会重复,我需要验证SSN的插入之前,学生尚未存在于数据库中。

我怎么能在mvc3上做到这一点? (我在.net和mvc3中全新)

我在学生控制器中创建的代码是:

[HttpPost]
    public ActionResult Create(Alumno alumno)
    {
        try
        {
            using (var db = new administracionEntities())
            {
                db.Alumno.Add(alumno);
                db.SaveChanges();
            }
            return RedirectToAction("Index");
        }
        catch
        {
            return View();
        }
    }

2 个答案:

答案 0 :(得分:1)

在插入之前检查输入alumno.ssn是否不存在,如

db.Alumno.where(a=> a.ssn == alumno.ssn).Any()

如果返回true,则数据库中存在ssn。

在MVC中有不同的方法可以实现这一点。在其中一种方法中,您可以在单独调用控制器而不是在Create Action中调用此调用。也许你可以通过客户端的SSN文本框模糊事件上的JQuery.Ajax调用来检查是否存在重复的SSN。

$.ajax({
   type: "Get",
   url: "StudentController/DoesSSNExist",
   data: "ssn=#", 
   success: function(msg){
       if(msg)
        alert('ssn already exists');
   }

这是控制器动作

public bool DoesSSNExist(string ssn)
{
    return db.Alumno.where(a=> a.ssn == ssn).Any()
}

答案 1 :(得分:0)

在我的模型课程中

public class Student {
    public int StudentID { get; set; }
    [Remote("UsernameChecker", "Student")]
    public string Username { get; set; }
}

在我的控制器中

public virtual JsonResult UsernameChecker(string Username){
    bool checkuser = db.Student.Any(i => i.Username == Username);
    return checkuser
        ? Json("Username already exists", JsonRequestBehavior.AllowGet)
        : Json(true, JsonRequestBehavior.AllowGet);
}