WebService without IIS but WCF

Mittwoch 21 Juli 2010 at 8:54 pm

Letztens wollt ich mal wieder ein wenig WebService mit C# testen. Naja, eigentlich einen WebService mit Silverlight nutzen.

Jedenfalls war klar, der Webservice soll nicht auf dem IIS laufen.
Mit WCF soll sowas recht einfach herzustellen sein.
Und es ist so einfach.

Hier noch schnell Webseiten die ich in Anspruch nahm:

Die Verwendung des WebService in einem Client lasse ich hier mal weg.

(mehr)

NHibernate - Query auf m:n relation - join

Sonntag 07 März 2010 at 09:57 am

Ich bin gerade an NHibernate dran. Um das hbm.xml Datei editieren zu umgehen, verwende ich Fluent NHibernate.

Gute Beschreibungen zum Thema und Blog Einträge gibt es im Internet zu hauf.
Insbesondere bei der Definition von m:n Beziehungen per Hibernate bzw. Fluent.

Trotzdem hatte ich das Problem, die HQL Abfrage so zu erstellen, dass eine Verknüpfung der beiden Tabelle über die Mapping Tabelle erfolgt.

Und das, obwohl mir klar war wie ich ein SQL Statement dazu formulieren muss.

(mehr)

NHibernate - SQLite - Primary Key - hbm

Freitag 19 Februar 2010 at 10:13 pm

Ich möchte einen SQLite Datenbank in einer C#.NET Anwendung einsetzen.
Als O/R Mapper soll NHibernate zum Einsatz kommen.

Mit NHibernate alleine muss (so scheint es zumindest) das hbm Mapping File zu einer Klasse angelegt werden.

Ich möchte ID Colums vom Type Autoincremet verwenden.
SQLite hat bei der Definition von Autoincrement Columns eine Besonderheit.

How do I create an AUTOINCREMENT field.

Um das Autoincrement zu aktivieren, muss die Column vom Type INTEGER sein und auf das Constraint  PRIMARY KEY gesetzt sein. Beim SQL insert Statement  muss die Autoincrement PK Column mit NULL gesetzt werden.
Nur dann wird automatisch hochgezählt.

HIer ein Auszug von der SQLite Page:

--------------------------------

CREATE TABLE t1(
      a INTEGER PRIMARY KEY,
      b INTEGER
    );

With this table, the statement

    INSERT INTO t1 VALUES(NULL,123);

is logically equivalent to saying:

    INSERT INTO t1 VALUES((SELECT max(a) FROM t1)+1,123);

--------------------------------

Mein Problem war nun, dass ich mit der Kombination NHibernate und hbm Definition es nicht geschafft habe
den SchemaExport dazu zu bringen, das PRIMARY KEY auf die ID Column zu setzen.

(mehr)

SharpDevelop - Multiple Commands in Pre/Postbuild

Samstag 13 Februar 2010 at 8:38 pm

Es ist wohl so, dass SharpDevelop bei den Build Events in

  • Pre-build event command Line
  • Post-build event command Line

Nur einzeilige Commands entgegen nimmt.

Wenn man mehr Commands ausführen möchte, lässt sich das z.B wie folgt lösen.

(mehr)

SharpDevelop - (Debug) Console Output

Samstag 13 Februar 2010 at 6:35 pm

System.Console.WriteLine("Bli Bla Blub.");

Wird nicht in der Console View des SharpDevelop angezeigt.
Das soll so sein.

Wie Console zur Ausgabe aktivieren in sharpdevelop?

(mehr)

C# - get Button handle via WinAPI - press Button

Dienstag 29 September 2009 at 8:47 pm

Hier werde ich in einem C# NUnit Test per WinAPI auf Window und Button der calc.exe zugreifen.

Um per WinAPI auf die Window Handles zuzugreifen, muss ich dieses zunächst identifizieren.
Dazu verwendet man, sofern MS DevStudio (C++) verfügbar ist, den MS Spy++.

Da ich, wie gehabt, #develop (short for SharpDevelop) als C# IDE verwende, muss ich mich nach Alternativen zu Spy++ umsehen. Hier konnte ich zwei Tools ausfindig machen, MS Spy++ style Window Finder und x-spy.

Ich verwende hier X-Spy da es die Caption und die Class zu einer Resource ermittelt.
(Ich merke gerade, das unangenehme an dem Tool ist, dass es die Desktop Icons neu angeordnet werden beim beenden der Applikation.)

(mehr)

WPF - disable Control depending on Validation Error

Samstag 12 September 2009 at 5:58 pm

Die Anforderung eines WPF Formulars ist, das auf ein TextBox Control eine Validierung durchgeführt wird.
Abhängig davon, ob ein Validierungsfehler vorliegt, wird ein Button enabled bzw. disabled angezeigt.

<Button Name="btnOk"
                Grid.Row="4" Grid.Column="1" Click="btOkClick"
                Margin="10 10 10 10" Content="Ok"
                IsEnabled="{Binding ElementName=tbVersion,
Path=(Validation.HasError), Converter={StaticResource boolToggle}}"
/>

Source code download

(mehr)

WPF - IsEnabled - Binding - bool - inverse

Donnerstag 10 September 2009 at 10:35 am

Jetzt wollte ich eben eine TextBox abhängig von einer ComboBox anzeigen lassen.
Aber in umgekehrter Logik.

Da habe ich diese Nachfrage gefunden, die so ziemlich meiner Nachfrage entspräche.
How to bind inverse boolean properties in WPF?

Ich habe etwa sowas vor, nur eben dass der Binding Wert umgekehrt verwendet werden soll.

<TextBox Grid.Row="10" Grid.Column="1" Grid.ColumnSpan="2" 
Name="tbRefSetupVersion" Height="25"
VerticalAlignment="Bottom" IsEnabled="{Binding Path=ValidateVersion}">
...

Eben, wie in der verlinkten Frage, etwa sowas wie

IsEnabled="{Binding Path=!ValidateVersion}"

Es ist aber schnell klar, hier wird nicht auf eine Variable mit Wert zugegriffen der dann negiert werden kann, sondern es handelt sich um einen Zugriffspfad auf die Daten.

(mehr)

WPF - Validation beim Window startup

Donnerstag 03 September 2009 at 4:17 pm

Jetzt möchte ich zeigen, wie bei einem WPF Window die Validierung der Felder beim startup des Window durchgeführt werden kann.

Der Code entspricht dem struebli-online Beitrag WPF - force - Validation - manually

Auf die richtige Fährte wurde ich geführt über die Beiträge
Initialized event of WPF UserControl not firing
und schließlich die Seite
The Loaded event and the Initialized event

Bezogen auf mein Sample muss der Code lediglich wie folgt ergänzt werden.

public Window1()
        {
            Loaded += delegate {
                bool isValid = Validator.IsValid(this);
            };

            InitializeComponent();
            DataContext = mData;
        }

Das Event Loaded wird geworfen wenn das Window initialisiert und gerendert wurde.
Somit reicht es nicht aus, sich an das Event Initialized zu hängen, da hier lediglich die Initialisierung abgeschlossen ist, das Window aber noch nicht angezeigt wird.

WPF - force - Validation - manually

Donnerstag 03 September 2009 at 3:29 pm

Ich mache ein Formular bei dem per Button Click die hinterlegten Validierungen angestossen werden sollen. Beim startup des Window wird keine Validierung durchgeführt.

Die Validierung wird erst beim update des Datenfeldes im DataContext angestossen. Wann das Feld geupdated wird, kann über UpdateSourceTrigger des Binding Tag im XAML angepasst werden.

In diesem Beispiel möchte ich die Validierung per Button Click anstossen.
Als Ergebnis wird beim CheckButton click im Fehlerfall die TextBox rot umrandet dargestellt.

Der Entscheidende Link für mich zum Thema war
WPF: force all the validation rules attached to an object to be executed

Den Code habe ich eins zu eins übernommen.
Es funktioniert auch mit UserControls.

(mehr)

WPF - Validation

Montag 31 August 2009 at 11:55 pm

Ein Beitrag wie tausend andere. Nur haben mir die Tausend nicht genau das gesagt, was ich gleich zum laufen brachte. Wie auch immer...

Deswegen auch von mir ein Beitrag zum Thema und Field .

Ich werde einen WPF Dialog mit nur einem TextBox Element erstellen.
Der Eintrag der TextBox wird daraufhin geprüft, ob er leer ist oder ob ein grosses X im Text vorkommt.
Es wird keine Fehler Message ausgegeben, sondern lediglich das Standard WPF verhalten bei Fehler, ein roter Rahmen um das Eingabe Feld angezeigt.

Mehr nicht.

(mehr)

C# - Start default Browser - Registry

Mittwoch 26 August 2009 at 10:50 am

Um den default Browser zu starten kann man wie folgt vorgehen.

How to start the default Internet browser programmatically by using Visual C#
Hier wird aufgrund der default Verknüpfung der Browser automatisch gestartet.

Nun möchte ich aber eine Datei in einem Browser öffnen, die nicht per default auf den Browser verlinkt ist.
In meinem Fall eine TXT oder XML Datei. Beide sind mit einer anderen Applikation verlinkt.

(mehr)

Error MSB3091 - C# - al.exe - SharpDevelop

Montag 10 August 2009 at 11:54 pm

Jetzt wollte ich mal ein wenig in Spring.NET reinschauen.
Ich verwende daheim das SharpDevelop als C# IDE und versuche per 2008er Solution File Spring.NET zu kompilieren.

Beim Build Solution bekomme ich gleich mal den Fehler

Build started.
Error MSB3091: Task failed because "AL.exe" was not found, or the correct Microsoft Windows SDK is not installed. The task is looking for "AL.exe" in the "bin" subdirectory beneath the location specified in the InstallationFolder value of the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v6.0A. You may be able to solve the problem by doing one of the following:  1) Install the Microsoft Windows SDK for Windows Server 2008 and .NET Framework 3.5.  2) Install Visual Studio 2008.  3) Manually set the above registry key to the correct location.  4) Pass the correct location into the "ToolPath" parameter of the task.
Build failed. (00:00:00.2812500)

So. Was ist nun zu tun ?

(mehr)

C# - Enum - Anzahl der Werte prüfen

Mittwoch 17 Juni 2009 at 3:07 pm

Wie finde ich die Anzahl von Werten eines Enum Types heraus ?
In diesem Fall in C#.NET

Wozu kann man das gebrauchen ?
Soll z.B. ein Unit Test prüfen, ob das Enum richtig definiert ist und die richtige Anzahl Werte hat.

(mehr)

LINQPad, Test your Linq Queries

Sonntag 24 Mai 2009 at 12:50 pm

Gefunden habe ich das über diesen WebBlog.

LINQPad ermöglicht es, Ausdrücke/Abfragen zu testen. In der Art, wie RegEx Ausdrücke in Tools getestet werden können.

(mehr)

Linq to XML with Namespace

Samstag 23 Mai 2009 at 01:11 am

Heute wollte ich mal schnell Linq mit ausprobieren. Immerhin könnte es die Arbeit in der kommenden Woche erleichtern.
Im Netz gibt es leicht Beispiele zu finden.
Nun habe ich aber ein XML mit default namespace.

Die Beispiel aus dem Netz tun mit meinem nicht. Wie geht das nun mit einem XML + Namespace.

(mehr)