コントローラー内の作成および編集メソッドでデータベースに保存する前に、重複をチェックする必要があります。次に、一般的なエラー メッセージではなく、重複したエラー メッセージを表示する必要があります。
重複の私の定義は、ユーザー ID + Code1ID + Code2ID + Code3ID + Code4ID です。
質問: 上記の値の組み合わせが既に存在する場合、重複をチェックするにはどうすればよいですか?
テーブル名
Character:
CharacterID int
UserID int
Code1ID int
Code2ID int
Code3ID int
Code4ID int
Name Varchar(40)
私の主キーは、UserID + Code1ID + Code2ID + Code3ID + Code4ID で構成されています。これにより、重複がデータベースに入力されないことが保証されます。しかし、私が返すエラー メッセージは一般的なエラー メッセージです。
最初に重複をチェックしてから、重複のみに基づいて警告メッセージまたはエラー メッセージを返す必要があります。
コントローラー内の編集メソッドは次のとおりです
//
// GET: /Character/Edit/5
public ActionResult Edit(int id)
{
Character character = db.Characters.Find(id);
PopulateUserIDDropDownList(character.UserID);
PopulateCode1IDDropDownList(character.Code1ID);
PopulateCode2IDDropDownList(character.Code2ID);
PopulateCode3IDDropDownList(character.Code3ID);
PopulateCode4IDDropDownList(character.Code4ID);
return View(character);
}
//
// POST: /Character/Edit/5
[HttpPost]
public ActionResult Edit(Character character)
{
try
{
if (ModelState.IsValid)
{
db.Entry(character).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
}
catch
{
ModelState.AddModelError("", "Generic Error. Unable to save changes. Try again, and if the problem persists, see your system administrator.");
}
PopulateUserIDDropDownList(character.UserID);
PopulateCode1IDDropDownList(character.Code1ID);
PopulateCode2IDDropDownList(character.Code2ID);
PopulateCode3IDDropDownList(character.Code3ID);
PopulateCode4IDDropDownList(character.Code4ID);
return View(character);
}
コントローラー内の作成メソッドは次のとおりです
//
// GET: /Character/Create
public ActionResult Create()
{
PopulateUserIDDropDownList();
PopulateCode1IDDropDownList();
PopulateCode2IDDropDownList();
PopulateCode3IDDropDownList();
PopulateCode4IDDropDownList();
return View();
}
//
// POST: /Character/Create
[HttpPost]
public ActionResult Create(Character character)
{
try
{
if (ModelState.IsValid)
{
db.Characters.Add(character);
db.SaveChanges();
return RedirectToAction("Index");
}
}
catch
{
ModelState.AddModelError("", "Generic Error.Unable to save changes. Try again, and if the problem persists, see your system administrator.");
}
PopulateUserIDDropDownList(character.UserID);
PopulateCode1IDDropDownList(character.Code1ID);
PopulateCode2IDDropDownList(character.Code2ID);
PopulateCode3IDDropDownList(character.Code3ID);
PopulateCode4IDDropDownList(character.Code4ID);
return View(character);
}
モデル
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace myproject.Models
{
public class Character
{
[Key]
public int CharacterID { get; set; }
[Required(ErrorMessage = "User is required.")]
[Display(Name = "User")]
public Guid UserId { get; set; }
[Required(ErrorMessage = "Code1 is required.")]
[Display(Name = "Code1")]
public int Code1ID { get; set; }
[Required(ErrorMessage = "Code2 is required.")]
[Display(Name = "Code2")]
public int Code2ID { get; set; }
[Required(ErrorMessage = "Code3 is required.")]
[Display(Name = "Code3")]
public int Code3ID { get; set; }
[Required(ErrorMessage = "Code4 is required.")]
[Display(Name = "Code4")]
public int Code4ID { get; set; }
[Required(ErrorMessage = "level is required.")]
[Display(Name = "Level")]
public int LevelID { get; set; }
public virtual aspnet_Users Aspnet_User { get; set; }
public virtual Code1 Code1 { get; set; }
public virtual Code2 Code2 { get; set; }
public virtual Code3 Code3 { get; set; }
public virtual Code4 Code4 { get; set; }
}
}