检查是否存在,并实时显示错误消息

时间:2015-03-30 12:05:21

标签: c# asp.net asp.net-mvc entity-framework asp.net-mvc-4

我试图检查db中是否存在 personalNumber ,而不是向用户显示消息。 I'm trying that using this但我有一个问题:

我已经粘贴了这个:

[HttpPost]
public JsonResult doesIdExist(string personalNumber)
{
  var user = db.PRT_PARTNERS.Find(personalNumber);

  return Json(user == null);
}

但它会在find上抛出异常:

  

类型' System.ArgumentException'的例外情况发生在   EntityFramework.dll但未在用户代码中处理

     

附加信息:其中一个主键值的类型   与实体中定义的类型不匹配。请参阅内部异常   的信息。

出了什么问题?

这是我的模特:

[Required(ErrorMessage = "მოცემული ველი სავალდებულოა")]
[RegularExpression(@"^\d{11}$", ErrorMessage = "გთხოვთ შეიყვანოთ 11 ნიშნა რიცხვი")]
[Display(Name = "პირადი ნომერი")]
[Remote("doesIdExist", "Partners", HttpMethod = "POST", ErrorMessage = "მოცემული პირადი ნომერი უკვე არსებობს ბაზაში")]
public string personalNumber { get; set; }

3 个答案:

答案 0 :(得分:2)

使用

db.PRT_PARTNERS.FirstOrDefault(x=>x.PersonalNumber==personalNumber);

db.PRT_PARTNERS.Any(x=>x.PersonalNumber==personalNumber);

查找方法与键一起使用。看here

  

查找具有给定主键值的实体。如果上下文中存在具有给定主键值的实体,则会立即返回该实体而不向商店发出请求。否则,向具有给定主键值的实体的商店发出请求,并且如果找到该实体,则将该实体附加到上下文并返回。如果在上下文或商店中找不到实体,则返回null。

答案 1 :(得分:1)

[来自对该问题的评论]

  

但在db中,它的名字是PERSONAL_NUMBER

但该模型表明它是personalNumber

所以你需要告诉EF:

  1. 这是关键列:使用Key attribute

  2. 数据库中有不同的名称:使用Column attribute

答案 2 :(得分:0)

使用此功能。

   [HttpPost]
    public JsonResult doesIdExist(string personalNumber)
    {
//db.PRT_PARTNERS.Where(x=>x.PersonalNumber==personalNumber);

      var user = db.PRT_PARTNERS.FirstOrDefault(p=>p.personalNumber==personalNumber);

      return Json(user == null);
    }