我有一个认证过程。现在,即使他们已经获得了相关项目的认证,它也会将人员添加到我的认证表中。
在我的查看页面上,我有一个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 (key IDENTITY)
procedureID (fkey to Procedure table)
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。我知道我在那里遗漏了一些东西。