C# 检查是否存在,然后实时显示错误消息

C# 检查是否存在,然后实时显示错误消息,c#,asp.net,asp.net-mvc,entity-framework,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Entity Framework,Asp.net Mvc 4,我试图检查数据库中是否存在personalNumber,然后向用户显示消息。但我有一个问题: 我贴了这个: [HttpPost] public JsonResult doesIdExist(string personalNumber) { var user = db.PRT_PARTNERS.Find(personalNumber); return Json(user == null); } 但它在find上抛出了一个异常: 中发生“System.ArgumentException”

我试图检查数据库中是否存在personalNumber,然后向用户显示消息。但我有一个问题:

我贴了这个:

[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; }
使用

Find方法与键一起使用。看

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

使用

Find方法与键一起使用。看

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

使用

Find方法与键一起使用。看

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

使用

Find方法与键一起使用。看

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


[来自对问题的评论]

但在db中,它的名字是个人号码

但是模型上说它是
personalNumber

所以你需要告诉EF:

  • 它是关键列:use

  • 它在数据库中有一个不同的名称:use


  • [来自对问题的评论]

    但在db中,它的名字是个人号码

    但是模型上说它是
    personalNumber

    所以你需要告诉EF:

  • 它是关键列:use

  • 它在数据库中有一个不同的名称:use


  • [来自对问题的评论]

    但在db中,它的名字是个人号码

    但是模型上说它是
    personalNumber

    所以你需要告诉EF:

  • 它是关键列:use

  • 它在数据库中有一个不同的名称:use


  • [来自对问题的评论]

    但在db中,它的名字是个人号码

    但是模型上说它是
    personalNumber

    所以你需要告诉EF:

  • 它是关键列:use

  • 它在数据库中有一个不同的名称:use

  • 用这个

       [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);
        }
    
    用这个

       [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);
        }
    
    用这个

       [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);
        }
    
    用这个

       [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);
        }
    

    数据库中的
    personalNumber
    类型是什么?@TimSchmelter它是VARCHAR2(50)。这和MSSQL上的nvarchar是一样的。但在db中,它的名称是PERSONAL\u NUMBER
    var user=db.PRT\u PARTNERS.FirstOrDefault(p=>p.personalNumber==personalNumber)数据库中的
    personalNumber
    类型是什么?@TimSchmelter它是VARCHAR2(50)。这和MSSQL上的nvarchar是一样的。但在db中,它的名称是PERSONAL\u NUMBER
    var user=db.PRT\u PARTNERS.FirstOrDefault(p=>p.personalNumber==personalNumber)数据库中的
    personalNumber
    类型是什么?@TimSchmelter它是VARCHAR2(50)。这和MSSQL上的nvarchar是一样的。但在db中,它的名称是PERSONAL\u NUMBER
    var user=db.PRT\u PARTNERS.FirstOrDefault(p=>p.personalNumber==personalNumber)数据库中的
    personalNumber
    类型是什么?@TimSchmelter它是VARCHAR2(50)。这和MSSQL上的nvarchar是一样的。但在db中,它的名称是PERSONAL\u NUMBER
    var user=db.PRT\u PARTNERS.FirstOrDefault(p=>p.personalNumber==personalNumber)