MVC-3 Prüfen auf Duplikate vor dem speichern in die DB, Anzeige duplizieren Fehlermeldung
Ich brauche, um zu überprüfen auf Duplikate vor dem speichern in der Datenbank erstellen und Bearbeiten-Methoden in meinem controller. Dann brauche ich anzeigen, um eine doppelte Fehlermeldung, anstatt eine generische Fehlermeldung.
Meiner definition eine doppelte ist:
userid + Code1ID + Code2ID + Code3ID + Code4ID.
Frage:
So prüfen Sie ein Duplikat, wenn die Kombination der Werte oben bereits existiert?
Tabelle Name
Character:
CharacterID int
UserID int
Code1ID int
Code2ID int
Code3ID int
Code4ID int
Name Varchar(40)
Mein Primärschlüssel ist zusammengesetzt aus UserID + Code1ID + Code2ID + Code3ID + Code4ID.
Dies garantiert, dass keine Duplikate in die Datenbank eingegeben. Aber die Fehlermeldung die ich fahre ist eine Allgemeine Fehlermeldung.
Ich brauche, um zu überprüfen, die Duplikate der ersten und dann wieder eine Warnmeldung oder Fehlermeldung basiert auf der Vervielfältigung allein.
Hier ist der Bearbeiten-Methoden innerhalb der controller
//
//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);
}
Hier ist die create-Methoden innerhalb der controller
//
//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);
}
Modell
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; }
}
}
- Was ist deine eigentliche Frage?
- Ich denke der Titel sagt alles: MVC-3 Prüfen auf Duplikate vor dem speichern in die DB, Anzeige duplizieren Fehlermeldung
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vor dem speichern in die DB... Suche die DB mit diesen Werten... wenn Sie etwas finden,... Sie haben ein Duplikat, und Sie können die richtige Meldung angezeigt.
Bearbeiten können, müssen Sie ausschließen, für die Abfrage das aktuelle Objekt bearbeitet wird.
Können Sie tun, ein Count() auf Ihr repository mit diesen IDs als der WHERE-Teil... wenn das Ergebnis 1 oder mehr ist... Sie haben Duplikate.
Müssen Sie
remote
- Attribut zu Ihrer Spalte, die Sie überprüfen möchten, zu duplizieren. Sie können sehen, das ein Beispiel hier. Sie können auch anpassen, dass die Fehlermeldung, die je nach der Logik beschreiben hier. möglicherweise müssen Sie fügen Sie ein weiteres Feld, in viewmodel dass die komplette Taste und dann add remote-Attribut. Wenn Sie möchten, dass einzelne Nachricht, dann müssen Sie möglicherweise benutzerdefinierte binder Modell beschreiben hier. oder wie oben schon gesagt, fügen Sie ein weiteres Feld mit verketteten Wert der Schlüssel und fügen Sie remote-Attribut für das Feld und aktivierenvalidationsummary