Die vom .net-Framework bereitgestellten Reflexions- und Feature-Technologien können zur Überprüfung der Datenwiederholbarkeit verwendet werden, um zu entscheiden, ob ein bestimmtes Datenelement in die Datenbanktabelle geschrieben werden soll.
Wenn eine Entität ein Datenelement in die Datenbank schreibt, muss häufig überprüft werden, ob es sich bei den Daten um ein Duplikat handelt, beispielsweise um eine neue Person , vorausgesetzt, die ID-Nummer kann nicht wiederholt werden. Wenn die neu erstellte Personal-ID-Nummer mit einem oder mehreren Einträgen in der Personaltabelle dupliziert wird, muss eine Eingabeaufforderung oder eine andere Möglichkeit gegeben werden, z. B. Aktualisieren oder Löschen.
In diesem Bedarfsszenario können Sie die Funktionen und Reflexionstechnologie des .net-Frameworks nutzen, um solche Anforderungen zu lösen. Der spezifische Prozess,
Zweitens beziehen Sie sich auf die neu geschriebene Feature-Class in der Entitätsklasse, um ihre eindeutige Kennung (eine oder mehrere Attributkombinationen) zu erstellen. Verwenden Sie beim Überprüfen der Datenduplizierung die von Attribute bereitgestellte Methode, um das eindeutige Identifikationsattribut (eines oder mehrere) jeder Entitätsklasse abzurufen.
Erweiterte Klasse, hier ist das Suffix Attribut in KeyFieldAttribute, das weggelassen werden kann, sodass KeyField eine Abkürzung ist, die KeyFieldAttribute entspricht.
Feature-Klasse verwenden: Attribute[] GetCustomAttributes(modeltype, inherit);
Verwenden Sie die von der Funktion zurückgegebene Schlüsselattributkombination, um die Daten in der Datenbank abzufragen. Wenn mindestens ein Datensatz gefunden werden kann, wird dieser entsprechend verarbeitet Wenn nicht, können Sie neue Daten direkt schreiben. In der Attribute-Klasse bereitgestellte Methodenbeschreibung: Das Obige ist eine detaillierte Einführung in die C#-Reflexion und die Funktionsduplizierungsprüfung. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn). )!
public class KeyFieldAttribute:Attribute { private static List<string> keyfields = new List<string>(); /// <summary> /// 构造关键属性 /// </summary> /// <param name="fields"></param> public KeyFieldAttribute(params string[] fields) { foreach (string kf in fields) { if (!keyfields.Contains(kf)) keyfields.Add(kf); } } public static List<string> KeyFields { get { return keyfields; } } }