1

Einfacher Logger mit C#

Wer kennt es nicht, in der Entwicklungsumgebung funktioniert die programmierte Software einwandfrei, auf einem anderen Testrechner aus unbekannten Gründen leider nicht mehr.

Um den Fehler schnell zu finden bieten sich Logfiles an. Gut dass .Net von Haus aus die Klasse Trace im namespace System.Diagnostics eine Lösung bietet.

Eine kleines Beispiel:

  1. in der App.config den Tracer hinzufügen:
    [crayon-61a6f77798ecd905684733/]
     
  2. Neue statische Classe erstellen:
    [crayon-61a6f77798ed0848930154/]
    Nun kann man mit z.B: Logger.Info(“Programmstart”,”Main”) im Programmcode  Informationen an die application.log Datei anhängen. Das tolle auch das Datum wird nun mit übertragen.



Binding Checkbox an eine Visible Eigenschaft eines Elements

Ab .NET Framework 4.5 bietet Microsoft den  BooleanToVisibilityConverter an mit dessen Hilfe man unter WPF man es umsetzen kann, dass eine Checkbox ein Element Visible oder Hidden setzt.
[crayon-61a6f77799965744133388/]
Quelle: http://stackoverflow.com/questions/6990982/wpf-control-tabitem-visibility-from-a-checkbox




MS-SQL Trigger

Trigger werden ausgeführt, wenn in einer Tabelle ein Ereignis ausgelöst wird.

Konkret heißt das, dass bei einem INSERT,UPDATE oder DELETE wir eingreifen können und einen oder mehrere Befehle “danach” oder “anstelle” von ausführen können.
[crayon-61a6f77799af2427176714/]
Wählen wir AFTER, dann wird der Datensatz erstellt/geupdated oder gelöscht und erst dann greift der Trigger ein.

Wählen wir stattdessen Instead Of, wird anstelle von dem Insert, Update oder Delete der Trigger ausgeführt.

Beim Trigger stehen uns 2 weitere Temporäre Tabellen zur Verfügung, nämlich inserted und deleted.

wenn wir z.B. einen neuen Datensatz id, Vorname, Nachname in die Datenbank geschrieben haben,

so können wir aus dem Trigger mit
[crayon-61a6f77799af4009493653/]
die Id, die gerade eben eingetragen wurde abfragen.

Machen wir ein Update, so wird der alte Datensatz erst einmal erst in die temporäre Tabelle deleted gesteckt, welchen

wir ebenso mit
[crayon-61a6f77799af6501534393/]
abfragen könnten.