我有一个控制器,如果特定数据不存在,它将创建一个新行,否则它将返回数据已存在的警报。 问题是我有一个查询,即使我的表是空的,它总是说不为空。
控制器:
public ActionResult CreateDisease(int? diseaseID, int? assessmentID, DiseaseList diseaselist)
{
var data = from x in db.DiseaseLists where ((x.AssessmentID == assessmentID) && (x.DiseaseID == diseaseID)) select x;
if (data == null)
{
diseaselist.DiseaseID = diseaseID;
diseaselist.AssessmentID = assessmentID;
db.DiseaseLists.Add(diseaselist);
db.SaveChanges();
return Json("Success", JsonRequestBehavior.AllowGet);
}
else
{
return Json("Already Exist", JsonRequestBehavior.AllowGet);
}
}
答案 0 :(得分:0)
您的数据不会是null
,它只会是一个空列表。将代码更改为此以检查是否找到了您要查找的对象。
public ActionResult CreateDisease(int? diseaseID, int? assessmentID, DiseaseList diseaselist)
{
var data = from x in db.DiseaseLists where ((x.AssessmentID == assessmentID) && (x.DiseaseID == diseaseID)) select x;
if (!data.Any())
{
diseaselist.DiseaseID = diseaseID;
diseaselist.AssessmentID = assessmentID;
db.DiseaseLists.Add(diseaselist);
db.SaveChanges();
return Json("Success", JsonRequestBehavior.AllowGet);
}
else
{
return Json("Already Exist", JsonRequestBehavior.AllowGet);
}
}
答案 1 :(得分:0)
而不是
var data = from x in db.DiseaseLists where ((x.AssessmentID == assessmentID) && (x.DiseaseID == diseaseID)) select x;
我试过
var data = db.DiseaseLists.Where(x => (x.AssessmentID == assessmentID) && (x.DiseaseID == diseaseID)).SingleOrDefault();
它完美无缺。