我试图检查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; }
答案 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:
这是关键列:使用Key
attribute
数据库中有不同的名称:使用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);
}