私は一意でなければならない属性Nameを持つクラスUserを持っています。問題は、それがこのEXをスロー繰り返し名前を持つユーザーを挿入しようとすることで、EFコードを使用して属性のユニティシティを制御する最善の方法最初に
注釈
[StringLength(100)] [Index(IsUnique = true)] public string Name { get; set; }
: は、これまでのところ、私はこれをチェックする3つの方法を検討してきました あなたが見ることができるように、私は内側の例外(私はそれが可能であるかどうかわからないが、私はそれを仮定する)と最後の内部例外のメッセージに移動する必要があります。
- 流暢APIは
https://stackoverflow.com/a/23155759/5750078
私はそれを試してみましたhaven'tが、私はそれは同じ問題注釈を持っていると信じています。手で
- チェック
コントローラコード:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "Name,Password,Profile")] User user)
{
if (ModelState.IsValid)
{
lock (locker)
{
validateNameUnicity();
db.Users.Add(user);
db.SaveChanges();
}
return RedirectToAction("Index");
}
return View(user);
}
問題:チェック日付ベースcheckingsほど正確ではないかもしれない私のコードに依存します。私は他の2つのオプションより多くのロジックをプログラムする必要があります。最後に、何らかの形でデータベースに直接アクセスすれば、何のチェックも全く行われません。
私は自分自身で学習しようとしているので、これを行うのがベストプラクティスであることを知る必要があります。できるだけベストを尽くしたいと思います。