Category Archives: C#
Alle Country Codes als SQL Query
Einfach eine Konsolenanwendung erstellen und folgendes Snippet reinkopieren:
Eintrag in AppSettings zur Laufzeit ändern
Zunächst benötigt man eine Referenz auf „System.Configuration“. Diese ist per Standard nicht in einem Projekt eingebunden Man muss eine AppSettings.config erstellen, die in etwa so aussieht:
1 2 3 4 5 6 7 8 9 10 |
<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="User" value="Andreas"/> </appSettings> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> </configuration> |
Anschließend noch eine Hilfsfunktion:
1 2 3 4 5 6 |
private void ChangeInAppSetting(string key, string value) { System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); config.AppSettings.Settings[key].Value = value; config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings"); } |
Die man ausführen kann:
1 |
ChangeInAppSetting("User", "Martin"); |
Auslesen kann man die AppSettings ganz einfach mit
1 |
ConfigurationManager.AppSettings["User"]; |
Snippet um Zip Dateien im Memory zu erstellen
Wenn Foldername gefüllt ist, wird ein Verzeichnis erstellt, wo die Dateien reinkommen.
1 2 3 4 5 |
/// <summary> /// Das Dictionary wird iteriert und die Dateien darin gezippt. Der Key Value des Dictionarys entspricht der neuen Dateienbezeichnung /// Foldername ist das Verzeichnis, wo alle Dateien enthalten sind. Leeres Verzeichnis -> Dateien liegen lose im Zip Archiv /// </summary> /// <returns>Zip File</returns> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
public static MemoryStream ZipFiles(IDictionary<string, FileInfo> files, string zipName, string Foldername = "") { if (!zipName.EndsWith(".zip")) { zipName += ".zip"; } var stream = new MemoryStream(); var zip = new ZipArchive(stream, ZipArchiveMode.Create, true); // Verzeichnis ins Archiv erstellen, wo darauf folgende Dateien rein kommen if (Foldername != string.Empty) { zip.CreateEntry(Foldername + "/"); } // Dateien, dem Archiv hinzufügen foreach (KeyValuePair<string, FileInfo> file in files) { // Zip Eintrag erzeugen ZipArchiveEntry entry = zip.CreateEntry(Foldername + "/" + file.Key, CompressionLevel.Optimal); // Zip Eintrag ins Memory schreiben using (var zipEntry = entry.Open()) using (var fileStream = new FileStream(file.Value.FullName, FileMode.Open, FileAccess.Read)) { fileStream.CopyTo(zipEntry); } } zip.Dispose(); stream.Seek(0, 0); return (stream.Length > 0) ? stream : null; } |
In Verbindung mit MVC kann der Stream nun Chunk-weise ausgegeben werden:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
System.IO.MemoryStream zipFile = getStream(); //Alternativ: result = File(zipFile, "application/zip", filename); Response.ClearHeaders(); Response.ClearContent(); Response.ContentType = "application/zip"; Response.CacheControl = "No-cache"; Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache); Response.AddHeader("Content-Length", zipFile.Length.ToString()); int chunkSize = 8192; byte[] buffer = new byte[chunkSize]; int offset = 0; int read = 0; using (var fs = zipFile) { while ((read = fs.Read(buffer, offset, chunkSize)) > 0) { if (!Response.IsClientConnected) break; Response.OutputStream.Write(buffer, 0, read); Response.Flush(); } } |
mit Dapper ein SQL join mappen
Da ich von Entity Framework 6 aus Perfomancegründen überhaupt nicht zufrieden bin, frage ich mich ernsthaft, wie einige das produktiv einsetzen. Daraufhin habe ich nach einer Alternative gesucht und bin bei Dapper, einem Projekt von Source stehen geblieben. Hier möchte ich einmal kurz zeigen, wie man mit Dapper eine Liste mit dem erstellten SQL Join […]
Richtig casten
Ich will es mal kurz halten : Casten ist nicht konvertieren, es ist eher eine Typzuweisung. Da in C# alles vom Typ Object erbt, können wir dem Object alles zuweisen was wir wollen. Um dann dem Compiler zu sagen, dieses Object ist aber vom Typ String und besitzt dementsprechend seine Eigenschaften, müssen wir es Casten. […]
Bulkupsert oder einfach Update, wenn bereits vorhanden ansonsten Insert in MSSQL
Lange habe ich nach einer vernünftigen Lösung gesucht, um riesige Datenmengen schnell in die Datenbank zu schreiben. Als Quelle steht uns eine List<Class> mit der Klasse zur Verfügung, die der Datenbanktabelle gleicht und jede Menge Inhalte enthält. Versucht man diese Liste nun über das Entity Framework in die Datenbank zu jagen, merkt man schnell, dass […]
String zusammensetzen Vergleich mit C#6
Wer kennt das nicht, da muss man z.B. einen SQL String basteln, der Werte aus Variablen zusammen setzen muss. Hierfür haben wir die 3 Variablen, die in die Personen Tabelle hinzugefügt werden müssen:
1 2 3 |
string Vorname = "Hans"; string Nachname = "Müller"; DateTime Geburtstag = new DateTime(1988, 2, 22); |
Die meisten Entwickler arbeiten dann einfach ohne Parameter:
1 |
string sql = "INSERT INTO Personen (Vorname,Nachname,Geburtstag) VALUES ('" + Vorname + ",'" + Nachname + "','" + Geburtstag + "');"; |
Der nächste sagt, ich arbeite mit dem StringFormater:
1 |
string sql = string.Format("INSERT INTO Personen (Vorname,Nachname,Geburtstag) VALUES ('{0}','{1}','{2}'", Vorname, Nachname, Geburtstag); |
Ein weiterer sagt, […]
Unter ASP.Net 5 mit Entity Framework 7 arbeiten
Mein Ziel in diesem Tutorial ist es, das neue ASP.Net 5 oder ASP MVC 6 mit dem Entity Framework 7 auszustatten. Dazu soll eine Tabelle Personal mit einer Adresstabelle in einer n:m Beziehung stehen. Na dann… lets go. Projekt erstellen Unter Web finden wir in Visual Studio 2015 den Eintrag ASP.NET Web Application Es ist […]
ASP MVC Html Template Erstellen und verwenden
Dazu erstellt man in den Ordner Views eine neue cshtml Datei, welche als Template dienen soll. Um diese vor anderen Views zu trennen empfiehlt es sich diese Template cshtml Seiten im shared Verzeichnis zu sichern. Dieses Template kann z.B. ein Logo und den Footer beinhalten, die jede oder nur einige der Html Seiten beinhalten soll. […]
ASP MVC View Razor Syntax
Eigentlich ist die Razor Syntax recht einfach gehalten, dennoch vergisst man sie schnell, wenn man nicht oft damit arbeitet. Einfachen Code Block erstellen: @{ C# } Variable ausgeben: @VarName String Zeichenkette ausgeben, ohne Variable(Ohne “ “ ): @:HalloWelt Zeichenverkettung: @var myVariable = „Baum“ @:ich habe einen schönen @(myVariable) der immer blüht. Textausgabe […]
Login