認定プロセスがあります。現時点では、問題の項目について既に認定されている場合でも、認定テーブルに人が追加されます。
私のビュー ページには、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 テーブル) 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 に暗黙的に変換することはできません。私はそこに何かが欠けていることを知っています。