Ach Abt, es ist immer wieder schön wie Du einen motivieren kannst.
Kannst Du Deine Kommentare nicht einfach mal für Dich behalten?
"Du hast Dich hier nicht eingearbeitet, Deine Programmierung stinkt, Alles was Du machst ist kein best practice"
Ich hab echt langsam keinen Bock mehr auf dieses Forum.
Ich habe den ganzen Tag überlegt, gestern ob ich hier überhaupt noch ne Farge stellen darf und prompt gibt's wieder auf's Maul!
Kenn zufällig jemand ein Anfängerfreundlicheres Forum als Dieses?
Ich bin's Leid!
Ja, das Abholen der Daten ist sowiet kein Problem.
Nur wie bekomme ich sie an das Treeview gebunden, ohne die View neu zu laden?
Irgendwie stehe ich grade etwas auf'm Schlauch.
...würde man dann den Tree in eine partialview packen und nur die aktualisieren?
Geht das?
Hallo Forum,
ich muss einen Treeview (bootstrap-treeview von Jon Miles) mit Daten füllen. Aufgabe dieses Treeviews ist eine Auswahl an Datensätzen anzuzeigen, die man dann als Vorlage zum Kopieren auswählt.
Da dieser Treeview aber nicht immer benötigt wird, wäre es sinnvoll ihn erst zu füllen wenn er wirklich gebraucht wird.
Dieser Tree ist derzeit in einem hidden modalen Dialog untergebracht und bekommt seine Daten als Json-Text über den ViewBag.
Nun möchte ich quasi in dem Moment wenn der modale Dialog sichtbar wird erst die Daten laden.
Idee war eine Action (JsonResult) mittels Ajax anzutriggern und die empfangenen Daten dann dem Treeview zuzuweisen.
Blöderweise muss dafür aber anscheinend die View neu geladen werden.
Wie könnte man so ein "popup"-Treeview anders erzeugen oder die Daten eben später in die View laden?
Hallo Forum,
in einem anderen Threat hat man mich auf das Drei-Schichten Modell der Programmierung hingewiesen.
Nun dachte ich bisher, dass in ASP.NET MVC der Controller die Logik-Schicht ist, wobei offensichtlich wohl eher zur Präsentationsschicht gehört.
Meine Frage ist daher, wie bzw. wo implementiere ich die Businesslogik?
Derzeit besteht mein Projekt klassisch aus einer Datenbank, diversen Controllern und den zugehörigen Views.
Im Grunde wird ja ein Datensatz im Controller geladen und dem View übergeben:
Wie würde ich das denn mit einer zwischengeschalteten Logikschicht lösen?
Eine Trennung in drei Schichten macht schließlich nur Sinn, wenn ich sie konsequent überall einsetze.
Hallo MrSparkle,
erstmal danke für den Link, und natürlich erwarte ich nicht dass jemand seine Glaskugel für mich bemüht.
Ich stehe halt vor einem Problem und suche erstmal einen Weg der Ursache näher zu kommen.
Was ich nicht bedacht hatte, dass der Server eventuell deutlich langsamer sein könnte als mein Notebook, auf dem das Debugging gemacht wird.
Daraus und aus den Anregungen hier ergeben sich bei mir neue Fragen, die ich vielleicht vorher stellen sollte, bevor ich dem SQL Server die Schuld gebe.
Das Thema Drei-Schichten-Modell ist hier sicher nicht ganz unangebracht, auch wenn die kontroverse Diskussion über Sinn und Unsinn bei "überschaubarer" Logik sicher nie enden würde.
Da es natürlich im Laufe eines Projektes immer mehr Methoden und Funktionen gibt ist sicher auch bei meinem Projekt auf lange Sicht diese Architektur sinnvoll und sollte sicher frühest möglich implementiert werden.
Irgendwie fallen mir zu diesem Thema, im Zusammenhang mit ASP.net MVC nur nicht die richtigen Suchbegriffe ein.
Bisher war ich davon ausgegangen, dass der Controller quasi die Logikschicht ist.
Das ist aber wohl ein Irrtum. Der Controller gehört dann wohl eher zur Präsentation.
Jetzt mal aus der Praxis, wie/wo implementiere ich denn die Businesslogik?
Ich meine, im einfachsten Fall gebe ich einer View einen Datensatz mit:
Wie würde ich das denn mit einer zwischengeschalteten Logikschicht lösen?
Eine Trennung in drei Schichten macht schließlich nur Sinn, wenn ich sie konsequent überall einsetze.
So, damit hier keiner Amok läuft...
Ich programmiere hier eher hobbymäßig und muss mich nebenbei auch noch um andere Dinge kümmern.
Ich werde mir heute Eure Fragen und Anregungen nochmal genauer anschauen und Euch dann auch auf Stand bringen.
Was das drei-Schichten Modell angeht...
Ich habe mir ASP.NET MVC selbst beigebracht und habe es ganuso aus bezahlten Lernvideos gelernt.
Wie oder Wo soll ich denn jetzt nochmal den Controller in Logikschicht und Datenzugriffsschicht aufteilen?
Ja, die letzten beiden Codezeilen habe ich nicht kommentiert, hab ich übersehen.
Ja, es ging ursprünglich um den ersten Aufruf einer View, in anderen Foren bekommt man auf die Fresse, wenn man auch nur einen Threat Zuviel startet, hier ist es eben anders.
Danke dafür!
db ist in der Tat das EF DB Context, wird aber nirgends einer View übergeben, wer auch immer das behauptet.
Hier wird lediglich das Ergebnis eines Funktionsaufrufes an die View übergeben!
Alle anderen noch offenen Fragen werde ich beantworten, sobald ich sie beantworten kann.
Ach ja und MrSparkle, "Du hast einen Debugger und einen Profiler zur Verfügung, nutze sie!"
genau das war meine eigentliche Frage.
Hmm…
zu den Taskmanager-Daten hatte ich ja oben schon was geschrieben.
Es handelt sich um einen Virtuellen Server mit Windows Server 2012 Standard,
SQL Server 2012
2 virtuelle CPUs
3GB Ram
150GB Festplatte.
Das ist der Aufruf einer View, der beispielsweise rund 5 Sekunden dauert:
Der anfänglich verzögerte Start ist ja offensichtlich normal.
Ich habe nun also seit einiger Zeit eine erste Version der Datenbank produktiv und stelle fest, dass sie trotz geringster Datensatzanzahl quälend langsam geworden ist.
Die Datenbank hat der zeit keine 18MB und auch eigentlich keine ungewöhnlichen Beziehung.
Auf dem Developer-Rechner fluppt die Datenbank problemlos aber auf den Server ist das ganze Gebilde gähnend langsam.
Mein Problem ist, dass ich überhaupt keine Ahnung habe, wo ich mit der Suche beginnen soll.
Bin mit SQL-Server leider noch ziemlich unerfahren :(
Wenn ich eine neue View öffne und demnach einen Datensatz abfrage geht die CPU Leistung kurzzeitig auf ca.85%, wobei hier der IIS worker-Prozess am meisten mit über 50% verbraucht.
Ich gehe aber eher davon aus, dass in der Konfiguration des SQL-Servers etwas nicht so richtig gut geklungen ist.
Wie geht Ihr an so eine Fehlersuche heran?
Ich weiß, was Du schreibst klingt logisch, sourceMigration sollte aber dennoch korrekt sein.
targetMigration sollte für Downgrades sein.
Ein Test mit Target, zeigt aber auch genauso wenig Erfolg.
update-database -script -TargetMigration:ListPositionAddedToProperties
Die Zieldatenbank weist bereits die Version 201812040833504_ListPositionAddedToProperties auf.
VS orientiert sich halt immer an der vorhandenen Datenbank sprich am entsprechenden Eintrag in der MigrationsHistory
Ich muss das Thema nochmal rauskramen.
Nachdem ich ja meine initiale Datenbank veröffenlicht habe, soll nun ein Update in der Produktivdatenbank erfolgen.
Optimistisch wie ich bin habe ich in der Paket-Manager-Konsole folgendes eingegeben:
update-database -script -SourceMigration:<Erste neue Migration>
Da ich dieses Update auf die lokale Datenbank natürlich schon angewendet habe bekomme ich die Meldung:
Keine ausstehenden expliziten Migrationen.
Womit sage ich dem update denn dass es sich um eine Migration für eine andere db handelt, damit es mir den SQL-Code generiert?
Die Klassen sind alle Datenmodelle in ASP.NET Entity Framework.
Da muss ich ehrlich gesagt grade passen, ob das so einfach geht, ohne die CodeFirst-Migration zu ruinieren. Sorry, da fehlt mir noch etwas Wissen zu :(
Aber ich werde mit dem Stichwort mal auf die Suche gehen. Danke.
Hallo Forum,
ich habe eine Frage zur Deklaration von Variablen.
Mein Problem ist, dass ich für einen Kopiervorgang eines Datensatzes je nach Auswahl des Benutzers aus 8 verschiedene Tabellen kopieren möchte.
Da der Aufbau der Tabellen in allen Fällen identisch ist, wäre es natürlich sinnvoll immer mit der gleichen Routine zu kopieren, also diese nicht acht mal zu schreiben.
Du hast Recht, sicher hat Jscript und CSS erstmal nichts mit ASP.NET zu tun.
Sorry für die Verwirrung.
Ich bin drüber gefallen, dass über das Scripts.Render einige Scripte und CSS-Files nicht geladen wurden.
Daraufhin hab ich alle Scripte und Styles erstmal manuell laden wollen.
Anscheinend habe ich mit der Reihenfolge der Scripte irgendwelche Wechselwirkungen erzielt.
Irgendwie verfließen die verschiedenen Technologien doch teilweise sehr stark miteinander.
Ich lasse in Zukunft einfach jeden Hinweis auf die von mir verwendete Technologie weg, dann kann es nicht falsch sein.
Dass es Web-Technologie ist, davon gehe ich aber weiter aus, wenn's Recht ist.
Hallo Forum,
ich verzweifle hier grade am Laden von Scripten und Styles.
Zunächst scheint es ja von essentieller Bedeutung zu sein, ob ein Script im <head> oder am Ende des <Body> geladen wird.
Woran kann ich erkennen, welches wo geladen werden muss?
Hallo nochmal...
ich habe mir einiges zu Canvas mit Netzwerken, aber auch Canvas als grafische Oberfläche angeschaut, stehe aber noch vor wenigen Fragen, auf die ich keine echte Antwort finde.
Da Netzwerk-Knoten anscheinend bei den gefundenen Projekten immer nur mittig im Knoten-Bild angebunden werden, kann ich diese Technik nicht direkt verwenden.
Ich muss bei einigen "Symbolen" zwei oder mehr Abgänge nebeneinander realisieren.
Also habe ich mir diverse Informationen zum direkten Grafik erstellen mit Canvas angeschaut.
Hier habe ich jetzt erstmal noch folgende Frage, die ich nicht selbst klären konnte.
- wie füge ich am besten "Symbole" in eine Canvas-Fläche ein?
Mir schwirrt dazu im Moment der Gedanke im Kopf herum eine Canvas Grafik direkt einzufügen, da ich dort definierte Punkte finden könnte, auf die man andere Symbole oder Linien andocken könnte.
Ist das sinnvoll?
Wenn ja, kann man dann irgendwie Gruppen an Canvas-Elementen bilden, die man als gesamtes verschieben oder positionieren kann?
- gibt es zum andocken irgendwelche Techniken, die man direkt verwenden kann oder muss das alles zu Fuß im bestehenden Bild gesucht werden?
Hallo Forum,
ich bin mit meinem ASP.NET MVC Projekt an einen neuen Kundenwunsch gestoßen, bei dem ich noch nicht genau weiß, wie bzw. womit ich ihn umsetzen soll.
Wie ja eingangs erwähnt handelt es sich um eine ASP.Net Anwendung.
Jetzt möchte ich eine Art Grafikeditor basteln der folgende Mindestanforderungen erfüllen soll:
-Vorgefertigte Grafik-Objekte (Symbole) platzieren, die eine Verbindung zur Datenbank brauchen (Also mindestens eine ID tragen müssen, besser noch andere Details) Also idealerweise Daten-Objekte darstellen sollen.
-Erstellung von Verbindungen zwischen diesen Objekten. Diese Verbindungen können (derzeit noch) komplett ohne Logik sein. Einfache Linien würden also reichen.
-idealerweise eine Art Andockfunktion und Raster für die Objekte, um sie aneinander zu reihen und für die "Verbindungen".
-Größe des Editor-"Blattes" möglichst "unendlich" und Symbole frei positionierbar.
Jetzt habe ich schon einiges gelesen aber für Webanwendungen bin ich da noch nicht wirklich fündig geworden.
Ich wäre also für jeden Tipp oder ein sinnvolles Suchwort dankbar.
Windows Server 2012 mit IIS und SQL-Server.
beim Laden der Index Seite wird lediglich das Layout mit Navbar und einer Sidebar geladen.
Der Inhalt der Sidebar ist dann allerdings, abhängig vom angemeldeten User bzw. bei nicht angemeldetem User gefüllt oder eben nicht. Hier hätte ich den einzigen Aufruf der vielleicht etwas Zeit kosten könnte. Das wäre dann aber "nur" die Information ob der User angemeldet ist und falls ja, welcher Usergruppe er angehört. Da die Ladezeit aber auch bei nicht angemeldetem User so hoch ist, kann der Aufbau der Sidebar schon nicht mehr die große Rolle spielen.
Das ganze geschieht mittels ASP.NET Identities.
Diese Telekom Navigationsseite taucht manchmal auf, wenn man von einem Telekom Anschluss aus eine unbekannte Seite öffnen will. Mega überflüssig aber ist halt so. Ich denke hier geht sie auf, weil zu lange kein Response kommt.
Abt, danke für den Tipp mit der Idle Time, da werde ich mal weitersuchen...
Hallo Ihr wissenden...
nun habe ich meine neue Site endlich online und muss feststellen, dass der erste Aufruf eines Views extrem lange dauert.
Am längsten dauert der initiale Aufruf des Home-Views.
Ich habe schon mit vorkompilieren veröffentlicht und dabei auch die option ‚allow precompiled site to be updated‘ deaktiviert, aber es ist so langsam, dass der Edge meint die Seite gäbe es gar nicht und auf Telekom Navigationshilfe weiterleitet.
Vom Safari aus dauert es beim ersten Aufruf etwa eine viertel Minute.
Danach dann höchstens eine Sekunde. Auch die weiteren Views, die dann auch Daten beinhalten brauchen maximal 1-2 Sekunden.
Wo fange ich da am besten an zu suchen?
Daten werden im Home-View gar nicht groß geladen aber ich denke mal die Verbindung zum SQL Server wird dort bestimmt schon aufgebaut?
Also bei mir funktioniert das recht flüssig.
Ich habe die Registrierung neuer User den Administratorkonten vorenthalten.
Diese können dann über ein Dropdown die verfügbare Usergruppe auswählen.
Für meine Anwendung ist das in Ordnung.
Ne eigene Implementierung wäre dann mit dem erwähnten IdentityServer?
Gibt's da Lesestoff oder einen "best way" um gleich in die richtige Richtung zu laufen?
Hab es selbst gelöst bekommen.
Statt die erste Migration anzugeben musste 0 angegeben werden damit die "System" Tabellen mit generiert werden.
PM> Update-Database -Script -SourceMigration:0
Das erzeugt ein SQL Script, dass alle benötigten Tabellen, inklusive der Identity-Tabellen und der Migrations-Tabelle aufbaut.
Dann bleibt jetzt nochmal die Frage nach Identity.
Hier wurde in den Raum geworfen, dass das wohl nicht mehr gemacht würde.
Warum ist das so?
Ist das zu unsicher?
Ok...
also entweder habe ich mich undeutlich ausgedrückt oder ich bin einfach zu blöd.
Ich habe eine WebApp mittels Visual Studio, basierend auf ASP.NET MVC erstellt.
Dabei habe ich vom VS die Identites mit erstellen lassen.
Jetzt mal angenommen ich habe einen Windows Server und einen SQL-Server und möchte meine Seite dort hochladen... wie mache ich das?
Bisher habe ich einen Workflow gefunden bei dem ich die Site als File-Sortiment in ein lokales Verzeichnis erstellen lasse und dann diese auf den Server hochlade.
Um die SQL-Datenbank zu erstellen hat Migrations mir dafür ein SQL-Script generiert.
Jetzt nochmal die Frage, wann wird wo das Tabellensortiment erstellt, was Migrations offensichtlich nicht kennt (ASP-Identity-Tabellen und die _Migrationshistory-Tabelle).
Hab die Seite auf einen Azure MAPS-Account hochgeladen und soweit zumindest schonmal behaupten, dass sie fehlerfrei läuft.
Jetzt ist halt nur noch die Frage nach dem "normalen" Server.
Kann mir bitte jemand mit nem Link zu nem Tutorial helfen?
Ich weiß die Meldung nicht mehr auswendig aber es gibt genau diese Tabelle [dbo].[__MigrationHistory] nicht.
Nochmal: das Skript zum Erzeugen der Tabellen wird vom VS erzeugt und enthält nicht die Tabellen, die es offensichtlich benötigt.
Der propagierte Workflow ist u.a., dass man alle notwendigen Dateien in ein Verzeichnis "erzeugen" lässt und für die Code-First Datenbank ein Skript generiert, mittels "update-database -script…"
Meine tollkühne Annahme war, dass dieses Wunderwerk Migrations dann bei einer neuen Datenbank allein auf die Idee kommt die Tabellen anzulegen, in die es rein schreiben will.
Zitat von MrSparkle
Zitat von Telefisch
Hab ich da die falsche Reihenfolge?
Welche Reihenfolge meinst du?
na die Reihenfolge in der man die Veröffentlichung vornimmt.
Zitat von MrSparkle
Zitat von Telefisch
Ich habe im SQL-Manager eine Datenbank angelegt und dann ganz optimistisch mittels einer neuen Abfrage die ersten SQL-Befehle ausgeführt. Das sollte doch stimmen oder?
Was sollte daran stimmen? Hat der Benutzer, den der EF in seinem ConnectionString verwendet, die erforderlichen Rechte oder nicht?
es geht doch noch gar nicht um Rechte. Auf was soll ich Rechte vergeben? Erst muss mal ne Datenbank da sein. Dann kommt die Website und die bekommt dann einen User im Connectionstring. Und ja, der braucht dann Rechte.
Aber so weit bin ich noch nicht. Ich habe lediglich gefragt, ob es der Richtige Weg ist die Datenbank mittels der SQL-Abfragen zu erstellen.
Zitat von MrSparkle
Zitat von Telefisch
Aber egal, wie bekomme ich die denn jetzt angelegt? Von Hand?
Das hat doch Abt bereits erklärt.
Ach ja? hab ich was überlesen?
Ich hab nur gelesen dass Migrations offensichtlich nichts damit zu tun hat.
Gibt es denn jetzt einen anderen Weg oder mache ich alles zu Fuß?