का उपयोग कर FluentValidation अद्वितीय नाम सत्यापन मेरे पास श्रेणी मॉडल है जिसमें नाम फ़ील्ड है, और प्रत्येक श्रेणी का नाम अद्वितीय होना चाहिए। मैंने सत्यापन किया है और जब मैं नई श्रेणी बनाने की कोशिश करता हूं तो यह काम करता है लेकिन इसे संपादित करने का प्रयास करते समय मुझे समस्या है। अभी के लिए यह सिर्फ यह जांच रहा है कि नाम मौजूद है या नहीं, निश्चित रूप से यह तब होता है जब मैं एक ही श्रेणी को संपादित करने का प्रयास करता हूं।डेटाबेस
मॉडल
[Validator(typeof(CategoryValidator))]
public class Category
{
public int ID { get; set; }
public string Name { get; set; }
virtual public ICollection<Image> Images { get; set; }
}
public class CategoryValidator : AbstractValidator<Category>
{
public CategoryValidator()
{
RuleFor(x => x.Name).NotEmpty().WithMessage("Category name is required.").Must(UniqueName).WithMessage("This category name already exists.");
}
private bool UniqueName(string name)
{
ProjecteDataContext _db = new ProjecteDataContext();
var category = _db.Categories.Where(x => x.Name.ToLower() == name.ToLower()).SingleOrDefault();
if (category == null) return true;
return false;
}
}
आप मैं UniqueName(string name)
समारोह है, लेकिन तो मैं जाँच कैसे मैं या इसमें आईडी पारित कर सकते हैं, पूरे मॉडल कर सकते हैं अगर यह मॉडल के रूप में एक ही आईडी है मैं तो संपादित करने के लिए कोशिश कर रहा हूँ देख सकते हैं यह गुजरता है मैं UniqueName(string name, int? id)
जैसे कुछ कैसे पास कर सकता हूं? मैंने आज केवल फ्लुएंट वैलिडेशन की खोज की और मुझे पता नहीं लगाया जा सकता है।
धन्यवाद, अभी काम कर रहा है। – sed
साइड नोट: जैसे ही आप इसके साथ काम कर रहे हैं, आपको डीबीकॉन्टेक्स्ट का निपटान करना चाहिए, इसलिए "(_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ –