cms の各アイテムに一意の URL があることを確認しようとしています。
モデルは IValidatableObject になり、以下の検証方法を使用しています。
私が抱えている問題は、アイテムが作成されているか (URL は既存のアイテムと一致してはならない)、編集されているか (URL はそれ自体以外のアイテムと一致してはならない) を識別することです。
どうすればこれを行うことができますか...そして、これに正しい方法でアプローチしていますか?
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
DataContext db = new DataContext();
string itemContainingURL = db.CMSPages.Where(c => c.URL == URL).Select(c => c.Title).SingleOrDefault();
if (!string.IsNullOrEmpty(itemContainingURL))
{
yield return new ValidationResult(String.Format("URL should be unique, but it already exists for item: {0}", itemContainingURL), new[] { "URL" });
}
}