2017-10-27 20 views
0

レコードの重複を防ぐ方法を検証するにはどうすればよいですか。 これは私のコントローラ(作成)重複レコードの回避MVC

[HttpPost, ValidateAntiForgeryToken] 

public ActionResult Create(Project mcpc, HttpPostedFileBase file, 
[Bind(Include = 
"ProjectID,NumberMCP,EngineerID,SiteLocationID,nameProject,Ptype, MCPcontent, Proj, ContentType")] Project project) 
     { 
      try 
      { 
       if (seg.ValidaAcceso(Session["AppCode"].ToString(), Convert.ToInt16(Session["UsrRol"]), "Crear")) 
       {       
        if (file != null && file.ContentLength > 0) 
        {       
          string ds = file.FileName.Substring(file.FileName.Length - 3); 
         string p = string.Empty; 
         p = Server.MapPath("~/UploadFiles/"); 
         file.SaveAs(p + file.FileName); 

         if (file.ContentLength > 0) 
         { 
          BinaryReader br = new BinaryReader(file.InputStream); 
          byte[] buffer = br.ReadBytes(file.ContentLength); 

          using (db) 
          { 
mcpc.Proj = file.FileName; 
           mcpc.ContentType = file.ContentType; 
           mcpc.MCPcontent = buffer; 
           db.Projects.Add(mcpc); 
           db.SaveChanges(); 
          } 

         } 
         ViewBag.EngineerID = new SelectList(db.Engineers, "EngineerID", "eName", project.EngineerID); 
         ViewBag.SiteLocationID = new SelectList(db.SiteLocations, "SiteLocationID", "nameSL", project.SiteLocationID); 


         return RedirectToAction("Index"); 
        } 
        else 
        { 
         TempData["Message"] = "No se elegió ningún archivo."; 
         return RedirectToAction("Create"); 
        } 
       } 
       else 
       { 
        return seg.NotAccess(); 

       } 

      } 

      catch /*(Exception ex)*/ 
      { 
       throw; 
      } 
     } 

私はアイデンティティ主キーとしてPROJECTIDを使用しています、とNumberMCPが重複していカントです。

私はレコードを作成することができないユーザーを表示する方法を探していました。 これは本当に簡単な質問かもしれませんが、ユーザーが重複したレコードを入力しようとするのを防ぐ最良の方法は何ですか? (新規プログラミング)

答えて

0

可能性のある重複フィールドがデータベースに追加される前に確認してください。存在する場合はエラーメッセージをユーザーに返し、そうでない場合は追加します。

using (db) 
{ 
    if (db.Projects.Any(p => p.NumberMCP == mcpc.NumberMCP)) 
    { 
     // Handle error here 
    } 
    mcpc.Proj = file.FileName; 
    mcpc.ContentType = file.ContentType; 
    mcpc.MCPcontent = buffer; 
    db.Projects.Add(mcpc); 
    db.SaveChanges(); 
} 
+0

私はプログラミングでは新しいですが、とにかく感謝します。 – Agar

+0

ありがとうございます。私は上記の結果を編集しています。 – Agar

+0

私が探していたものに対する答えまたは解決策は、次のとおりです。System.ComponentModel.DataAnnotationsを使用して、自分のクラス[Remote( "Validation"、 "Projects"、ErrorMessage = "Is already in used。 コントローラに追加する 公開JsonResult検証(文字列NumberMCP) { PMPDIDBEntities db =新しいPMPDIDBEntities(); var result = true; bool ExistsInDatabase = db.Projects.Any(x => x.NumberMCP == NumberMCP); if(ExistsInDatabase)result = false; return Json(result、JsonRequestBehavior.AllowGet); } – Agar

関連する問題