C# Code

Start SingleInstance of Application /VB-.NET

Nachdem ich bei Klaus gelesen hatte, wie er es gelöst hat, eine App nur einmal zu starten, musste ich nochmal extrem nachdenken, bei welchem Projekt und wie ich das gelöst hatte. Das mir das nicht nochmal passiert, habe ich hier mal den Code verewigt. Ursprünglich von Codeproject in c#.     1 Imports System     2 Imports System.Windows.Forms     3 Imports System.Runtime.InteropServices     4 Imports System.Text     5 Imports System.Diagnostics     6 Imports System.Threading     7 Imports System.Reflection     8 Imports System.IO     9     10 Namespace SingleInstance    11     ''' <summary>    12     ''' Summary description for SingleApp.    13     ''' </summary>    14     Public Class SingleApplication    15     16         Public Sub New()    17         End Sub    18         ''' <summary>    19         ''' Imports    20        ...

posted @ Saturday, August 29, 2009 7:53 AM | Feedback (0)

HierarchyID in LinqToSQL oder Entity-Framework nutzen // MSSQL Server 2008

Leider gibt es noch keinen Weg, in LinqToSQL oder Entity Framework den neuen Datentyp HierarchyID in MSSQL-Server 2008 zu nutzen. (Microsoft am 12.5.2009) Da der Datentyp sehr praktisch, schnell und immer wieder Hierarchien bei Kommentaren, Menüstrukturen usw. auftreten, will ich ihn natürlich trotzdem nutzen. Hierfür erstelle ich erst einmal eine Tabelle, die eine ContentID enthät, welche die Integer-ID meines Contents enthält, die HierarchyID natürlich und eine assoziationTypeID, da ich diese Tabelle für unterschiedlichen Content nutzen möchte. CREATE TABLE [dbo].[t_C_ContentHierarchy](     [d_C_ContentHierarchyID] [int] IDENTITY(1,1) NOT NULL,     [d_ContentID] [int] NOT NULL,     [d_hierarchyID] [hierarchyid] NOT NULL,     [d_I_assoziationTypeID] [int] NOT NULL,  CONSTRAINT [PK_t_C_UserContentHirarchy] PRIMARY KEY CLUSTERED (     [d_C_ContentHierarchyID] ASC )WITH (PAD_INDEX  = OFF,...

posted @ Sunday, May 31, 2009 10:37 AM | Feedback (0)

Html mit Linq und .NET 3.5 im Codebehind generieren

Jeder kennt es, ab und zu muß man dann doch HTML-Code im ´Hintergrund (z.B. für einen Email-Body) generieren und sückelt sich zu unübersichtlich zu Tode. Mit dem XElement ist das kein Problem. Man schreibt den HTML-Code wie im Markup-Editor und kann sogar Variablen wie im markup einbinden: <%=meineVariable%> Kein hantieren mit Anführungszeichen usw..

posted @ Tuesday, September 09, 2008 7:41 PM | Feedback (0)

Microsoft Sync Framework

Mit Visual Studio 2008 wurden auch die Assemblies des ADO.NET Sync Services installiert. Mit Hilfe dieser API lassen sich (z.B. mobile) Anwendungen die nicht ständig mit der Datenbank verbunden sind einfach mit dem Server syncronisieren. Mit Hilfe eines Assistenten kann man innerhalb weniger Minuten alle notwendigen Routinen und Trigger zur Aktualisierung der ClientDatenbank und der ServerDatenbank erstellen. Auf Channel9 ist ein 18 Minuten Video von Daniel Moth für den Schnelleinstig mit dem Microsoft Sync Framework erschienen. Den Assistenten kann man aufrufen in dem man ein neues  Element "Local Database Cache"  hinzufügt. Im Code wird dann nur noch ein "syncAgent.Synchronize();" benötigt um die Synchronisierung durchzuführen.  

posted @ Friday, February 22, 2008 4:10 PM | Feedback (0)

Enum-Werte auslesen

Mit Hilfe von System Reflection kann man Enumwerte auslesen und entsprechend weiter verarbeiten. using System.Reflection; private enum Fruits {       Orange = 1,       Apple = 2,       Pear=3 } static void Main() {       Type dataType = Enum.GetUnderlyingType(typeof(Fruits));              foreach (FieldInfo field in typeof(Fruits).GetFields(                            BindingFlags.Static | BindingFlags.GetField | BindingFlags.Public))       {             object value = field.GetValue(null);             Console.WriteLine("{0}={1}", field.Name, Convert.ChangeType(value, dataType));        }      Console.ReadLine(); } EDIT: Oder eben einfach mit  Enum.GetValues(Fruits); Enum.GetNames(Fruits); (Danke Dani für den Kommentar!)  

posted @ Thursday, February 14, 2008 10:44 AM | Feedback (2)

Extension Methods in .NET 3.5

Eine der Neuerungen in .NET 3.5 sind die Extension Methods. Mit Hilfer der Extension Methods lassen sich alle nicht static Classes um eigene Methoden erweitern. Ob die Basisklassen im Projekt oder als Referenz eingebunden sind ist egal. Hier ein Beispiel: FileInfo soll um eine Methode erweitert werden, die in der Console FileInfo.Exists ausgibt und eine Benutzerreaktion abwartet. Hierfür fügen wir dem Projekt eine statische Methode mit entsprechedem Syntax hinzu:     public static class myExtensionMethods     {         public static string ExistsMessage(this FileInfo f )         {             Console.WriteLine("FileInfo.Exists={0}", f.Exists);             Console.ReadLine();             return f.Exists.ToString();         }     } Dannach ist jedes Object vom Typ Fileinfo um diese statische Methode erweitert(und zwar inklusive Intellisense)  Siehe auch: New...

posted @ Thursday, January 17, 2008 11:30 AM | Feedback (0)

Klammern in C# mit deutscher Tastatur

nach dem ich in letzter Zeit fast nur noch in c# entwickle, stört es mich auch mehr und mehr das die ständig benötigten Klammern auf der deutschen Tastatur relativ kompliziert zu erreichen sind. Die Lösung ist, sich ein neues Macro-Project anzulegen und in den Options von Visual Studio die entsprechenden Methoden mit einem Keycode zu versehen. (Die Methoden der Macros erscheinen dort unter Macros.ModulProjectName.ModulName.MethodName) Bei mir ist ab sofort:    Ctrl + ö            => {    Ctrl + ä            => }    Ctrl + Shift + ö  =>[    Ctrl + Shift + ä  =>] und hier der Code für das Macro Imports System Imports EnvDTE Imports EnvDTE80 Imports EnvDTE90 Imports System.Diagnostics Public Module Module1          Sub...

posted @ Wednesday, January 16, 2008 3:41 PM | Feedback (0)

SQLDatasource und Anzahl der SQL-Server abfragen

Thomas Beckert hatte heute auf glengamoi.com das Problem, dass er bereits im Page_Load(ASP.NET) ein DataBind eines Repeaters durchführen musste. Die Frage kam auf, ob dies dazu führt, dass die SQL-Abfrage evtl. mehrmals zum MSSQL geschickt wird. Das wollte ich nun genau wissen. In den Leistungstools des SQL-Servers gibt es den SQL Server Profiler mit dessen Hilfe man alle Aktivitäten und Abfragen auf dem SQLServer überwachen kann. Die Antwort ist: Beim einem Standard Aufruf macht dies keinen Unterschied. D.h. auch wenn im Page_Load ein Gridview1.DataBind() aufgerufen wird, wird nur eine Abfrage zum SQL-Server gesendet. Die Abfrage wird unmittelbar vor dem...

posted @ Monday, January 14, 2008 7:32 PM | Feedback (0)

Script#

In Scott Guthrie's Blog habe ich in den Jan 4th Links einenen Hinweis auf ein Script#-Update gefunden. Aber was ist Script#? Der Script#-Compiler von  Nikhil Kothari erlaubt es Code in C# zu entwickeln und Javascript als Ergebmis zu erhalten. Sicher interessant für jeden der firm in C# ist und mehr und mehr eigene Ajax-Funktionalitäten benötigt. Ein weiterer Vorteil ist sicherlich das C# Intellisense von VisualStudio Beispiel: using System; using ScriptFX; using ScriptFX.UI; namespace HelloWorld {     public class HelloWorldScriptlet : IScriptlet {         private Button _okButton;         private TextBox _nameTextBox;         private Label _helloLabel;         private XMLHttpRequest _request;         public void Start() {             _okButton = new Button(Document.GetElementById("okButton"));             _nameTextBox = new TextBox(Document.GetElementById("nameTextBox"));             _helloLabel = new Label(Document.GetElementById("helloLabel"));             _okButton.Click...

posted @ Friday, January 04, 2008 5:24 PM | Feedback (0)