Archiv für den Monat Mai 2017

Out of Memory Exception beim EF Debuggen im IIS Express


Bisher noch nie vorgekommen, aber es gibt immer ein erstes mal. Heute hatte ich beim Abrufen großer Datenmengen um einen Cache zu befüllen auf einmal eine “Out of Memory” Exception, obwohl mein Visual Studio vom RAM her sehr gut aussah und auch noch genug RAM zur Verfügung stand.

Leider gibt die Fehlermeldung auch nicht mehr her, weder Stacktrace, noch eine Innerexception. Daher erst einmal Google befragt und hier findest sich auch nicht wirklich etwas brauchbares, außer das man wahrscheinlich in einer x86 Anwendung arbeitet oder seinen Code in x86 kompiliert hat. Das war bei mir aber nicht der Fall, ich habe alles mit “AnyCpu” kompiliert.

Leider weiß ich nicht mehr wie ich auf die Idee kam, das es ja auch am IIS Express liegen könnte, denn auf dem Server wo die Anwendung bereits ausgerollt war funktionierte es ja bestens. Und siehe da standardmäßig nimmt VS den IIS Express mit 32Bit und wieder habe ich ein Optionsmenü in VS gesehen was ich bisher noch nicht kannte, in dem man einstellen konnte das VS den IIS Express standardmäßig mit 64Bit startet.

Extras => Optionen => Projekte und Projektmappen => Webprojekte

image

und “schon” war meine “Out of Memory” Exception beim Abrufen von EF Daten in meiner Webanwendung gelöst.

ngModel like two-way-databinding für Komponenten in Angular


Da es sich bei Angular nur noch im Komponenten handelt, ist es hier natürlich auch wichtig wie man Daten an Komponenten weitergibt und auch wieder zurückgeben kann. Dafür gibt es zwei wichtige Dekoratoren “@Input” um Daten an eine Komponenten zu übergeben und “@Output“ um Daten wieder “zurückzugeben”.

Um ein two-way-databinding zu erstellen gibt es mindestens zwei Möglichkeiten.

V1 eine ngModel Like Datenbinding mit “banana in the box” Syntax  [(name)] hier muss in der Childkomponente bei der Namensgebung des Output Dekorators darauf geachtet werden, das dieser am Ende des Namens “Change” stehen hat und der Name selbst dem vom Input Dekorator entspricht.

V2 hier handelt es sich um die “normale” Bindung mit zwei Attributen eine für die Eingabe der Werte mit eckigen Klammern  “[age]” und dann noch um eine Eventbindung mit  runden Klammern “(ageChanged)” um die Daten die aus der Child Komponente zurückgegeben werden auszuwerten. Auch hier werden wieder zwei Dekoratoren benötigt der Input um die Daten an die Komponente zu senden und der Output Dekorator um das Changed Event aufzurufen.

Parent Komponente

Child Komponente

Wie man in beiden Fällen sieht wird in der Child Komponente für den Output Dekorator ein EventEmitter erstellt mit einem bestimmten Typen (bei uns string), der als Rückgabewert im emit für den EventEmitter übergeben werden muss. Bei dem Wert den man an emit übergibt, handelt es sich um den Rückgabewert und dieser muss immer entsprechend “manuell” angestoßen werden, bei uns z.B. über das “keyup” Event unseres Inputs.

Dazu gibt es noch ein funktionierendes Plunkr Beispiel.