मैं एक कस्टम सत्यापन [IsUnique] बनाने की कोशिश कर रहा हूं। यह जांचें कि क्या संपत्ति मूल्य अद्वितीय है और एक उचित संदेश लौटाता है।सी # कस्टम सत्यापन अद्वितीय संपत्ति - जेनेरिक कक्षाएं
यह मेरा कोड है, लेकिन यह केवल एक निर्दिष्ट वर्ग के लिए काम करता है, मेटाडेटा द्वारा उचित कक्षा प्राप्त करने के लिए एक विधि करना संभव है?
public class ArticleMetaData
{
[Required(AllowEmptyStrings = false)]
[IsUnique("Name")]
public String Name{ get; set; }
}
और अपने कस्टम मान्यता:
class IsUnique : ValidationAttribute
{
public IsUnique(string propertyNames)
{
this.PropertyNames = propertyNames;
}
public string PropertyNames { get; private set; }
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var myproperty = validationContext.ObjectType.GetProperty(PropertyNames);
var value = propiedad.GetValue(validationContext.ObjectInstance, null);
IEnumerable<String> properties;
List<string> propertiesList = new List<string>();
propertiesList.Add(myproperty.Name);
var dba = new myContext();
if (dba.Articles.Any(article => article.Name == (string)value))
{
return new ValidationResult("The name already exist", propertiesList);
}
return null;
}
}
विचार बस एनोटेशन [isUnique] उपयोग करने के लिए हो सकता है और विधि टिप्पणी के साथ वर्ग लेते हैं और इसी इकाई खोज करते हैं।
संभव डुप्लिकेट [मैं जेनरिक स्टोर कर सकते हैं एक वस्तु के क्षेत्र में विशेषता] (http://stackoverflow.com/questions/304640/can-i-store-the-generics-attribute -इंटर-ए-ऑब्जेक्ट-फ़ील्ड) –
क्या आप उपयोगकर्ता को डेटाबेस में डुप्लीकेट रिकॉर्ड सहेजने से रोकने की कोशिश कर रहे हैं? –
@ जुआनएम.इलोसेगुई मेरा लक्ष्य है। डुप्लिकेट नाम, ईमेल इत्यादि नहीं, यह एक अद्वितीय कुंजी एसक्यूएल – grteibo