我有一个认证流程。现在它会将人员添加到我的认证表中,即使他们已经针对相关项目进行了认证。添加之前检查行是否存在?
在我的查看页面上,我有一个procedureID
,并且有Active Directory用户名。我将它传递给我的控制器方法,然后将它们添加到表中。
但是,如果它们已经存在,我不需要添加它们只需更新认证日期并将其他所有内容单独保存。
我遇到麻烦的是检查它们是否存在。
[HttpPost]
public ActionResult AddCertification(int procedureID, FormCollection collection)
{
string[] certifiedUsers = collection["members"].Split(',');
IPACS_Certification ipacs_certification = new IPACS_Certification();
foreach (var item in certifiedUsers)
{
// Does the certification exist?
IPACS_Certification doesExist = db.IPACS_Certification.Where(m => m.adUserName == item && m.procedureID == procedureID).Select(m => m);
ipacs_certification.procedureID = procedureID;
ipacs_certification.certifiedDate = DateTime.Now;
ipacs_certification.adUserName = item;
db.IPACS_Certification.Add(ipacs_certification);
db.SaveChanges();
}
return RedirectToAction("AddCertification");
}
我的表格包含以下列。
certID(关键IDENTITY)
procedureID(FKEY到程序表)
certifiedDate DATETIME
adUserName NVARCHAR
如果它们存在,我应该能够从adUserName抢行和procedureID和抢独特的单一记录。如果他们确实存在,那么我需要做的就是将certifiedDate更新为今天的日期。如果没有找到记录,那么我需要执行上述添加。
上面的代码有错误:
IPACS_Certification doesExist = db.IPACS_Certification.Where(m => m.adUserName == item && m.procedureID == procedureID).Select(m => m);
不能键入System.Linq.IQueryable隐式转换为IPACS_Certification。我知道我错过了那里的一些东西。
你得到的错误是什么? –
什么是你引用的“item”变量的类型? –
@LukeW。只有目前我得到的错误是在原始文章的底部。主要问题是我不确定如何检查记录是否存在,而不使用ID字段。只有adUsername和procedureID才能在此处使用。 –