Laden...

Forenbeiträge von Rioma Ingesamt 228 Beiträge

05.10.2015 - 15:41 Uhr

Alles klar, danke

05.10.2015 - 09:08 Uhr

Danke für den Hinweis.
Glaubst du denn, dass die Umstände mit VNext bedeutend besser werden?

02.10.2015 - 14:22 Uhr

Nicht unbedingt die besten Aussichten. Soweit ich mich erinnere gilt der RC1 bereits als "Production Ready". Dann werde ich bis dahin mit Linux warten und entsprechend migrieren.

Danke

02.10.2015 - 13:59 Uhr

Hallo zusammen,

hat jemand von euch bereits Erfahrungen mit der "Cross-Plattform" Entwicklung der Asp.net Web Api (kein Asp.Net 5)?

Ziel ist, dass die Web Api auf Windows (IIS) und Linux läuft.

  1. Ist es möglich das das Projekt unter Windows mit dem IIS läuft und gleichzeitig auf Linux mit dem Mono Server + Apache/Nginx, oder muss die Web Api self hosted sein?
  2. Wie kann man den Aufwand möglichst gering halten? Man möchte natürlich nicht 2 Systeme betreuen. Habt ihr bewerte Praktiken?

Danke euch

17.09.2015 - 19:08 Uhr

Codebehind wollte ich nur im letzten Notfall verwenden und ich hoffe ich komme drum herum. Ich müsste nicht über alle Eigenschaften, sondern nur über eine bestimmte und hier prüfen ob der vom Benutzer festgelegte Wert enthalten ist.

Meine Idee nach deinem Post Witte wäre jetzt:

Meine Items habe ein zusätzliches Propertie "Gruppe". Der Benutzer legt eine Gruppe an, die einen "Namen" und einen "Wert" hat. Name der Gruppe und Schlüsselwort nach dem in meinem Item.text gesucht wird.

Sobald ein neues Item hinzugefügt wird, hole ich mir alle Werte und prüfe, ob sich dieser im Text befindet, falls ja bekommt das Property "Gruppe" den "Namen".

Gruppiert wird dann über die Collectionview + Property "Gruppe".

Ich glaube so hast du es gemeint oder?

17.09.2015 - 18:33 Uhr

Hallo zusammen,

ich würde gerne dynamisch Gruppen anlegen können.

Das heißt, es gibt ein bestimmtes Property vom Typ string. Gruppiert wird anhand von Schlüsselwörtern, die dynamisch festgelegt werden können.

Zum Beispiel: Ich will alle items in denen der string "Test" vorkommt in meiner angelegten Test-Gruppe haben.

Ist dies überhaupt sauber umsetzbar? So langsam gehen mir nämlich die Ideen aus.
Wäre schön wenn jemand eine Idee, oder sogar ein Beispiel hätte 😃

Danke

17.09.2015 - 18:23 Uhr

Mein Problem war, dass ich eine Listview an eine Collection gebunden habe. Ich wollte nun bei einem Doppelklick auf ein ListviewItem eine Aktion auslösen, die sich quasi im ShellViewModel befindet. Die Aktiion wurde aber im ViewModeltyp des ListviewItems gesucht.
Deswegen meine Aussage mit dem falschen Context.

Ich habe es jetzt direkt über die Listview gelöst.

Danke

13.09.2015 - 13:33 Uhr

Hallo zusammen,

ich würde meinen ListviewItems gerne ein MouseDoubleClick Event anhängen. Benutzt wird Caliburn Micro.

Ich realisiere das ganze über einen Setter:

 <Setter Property="cal:Message.Attach" Value="[MouseDoubleClick] = [Action MEINEACTION]"/>

Ich befinde mich so nun natürlich im falschen Datacontext.

Hat jemand von euch eine Idee, wie ich den Aufruf auf das ViewModel lenke?

Danke

06.09.2015 - 20:23 Uhr

Alle klar, danke

06.09.2015 - 19:33 Uhr

verwendetes Datenbanksystem: SQLITE

Hallo zusammen,

was ist die effizienteste Art eine SQL-Query zu loggen, nachdem die Parameter hinzugefügt wurden?

Soweit ich das sehe, wird die SQL-Query per

Parameters.AddWithValue()

nicht wirklich "zusammengebaut" und ich komme auch nicht an die Query (es wird kein EF genutzt).

Muss ich mir die Query zusätzlich in einem string zusammenbauen, oder gibt es hier einen anderen eleganteren und bewerten weg?

Danke

04.09.2015 - 10:20 Uhr

Ich habe irgendwann einen JavaScript Error in Spalte 1 und Zeile 1 bekommen.
Auf einem anderen Computer lief es problemlos. Eine Neuinstallation des IIS hat das Problem behoben und jetzt funktioniert auch die Rewrite Regel ohne nochmal eine Anpassung gemacht zu haben. Ich kann es mir ehrlich gesagt nicht erklären.

Danke für die Hilfe

03.09.2015 - 09:54 Uhr

Ich kann dir leider nicht ganz folgen. Ich habe an den Default-Einstellungen des Hanlder Mappings nichts geändert.

Das problem tritt erst auf, sobald ich die Rewrite-Regeln einrichte. Deswegen gehe ich mal davon aus, dass meine Regel für /api bzw. /token falsch ist, oder ist das bei einem 405 Error quatsch? So langsam gehen mir hier aber die Ideen aus.

Über Angular setzte ich ein Post-Request ab und kein PUT-Request.

02.09.2015 - 21:45 Uhr

Danke, ich hatte dies nun genauso umgesetzt. Allerdings habe ich noch ein kleines Problem.
Ich bekomme vom Server einen > Fehlermeldung:

POST 405 Method Not Allowed Error zurück.

So langsam gehen mir leider die Ideen aus.

Ich bin mir nicht sicher, ob meine Regel für den Pfad /api falsch ist, oder ob es wirklich am Verb "POST" liegt.

Könnte mich nochmal jemand in die richtige Richtung schupsen?

01.09.2015 - 09:32 Uhr

Danke erstmal an euch. Ich hatte mich jetzt an malignate's Vorschlag gehalten, da die Datenbanklogik bereits besteht.

Ich hätte noch eine kleine Frage und zwar: Wie geht ihr mit einem manuellen "Page-Refresh" bei aktiviertem html5-mode um? Der IIS findet logischerweise die Ressource nicht.

Erstellt ihr eine "Rewrite-Regel" für die URL, oder gibt es bessere Möglichkeiten das Problem zu umgehen?

Bei einem reload, soll der Benutzer natürlich auf der Seite bleiben, oder wieder darauf "landen"

22.08.2015 - 12:38 Uhr

Das Problem was ich bei dem Routing über Angular je nach Benutzer/Abteilung sehe, ist das es dann irgendwann viel wird und ich jedes mal den Code anfassen muss, nur weil ein Benutzer/eine Abteilung etwas anders haben möchte. Dazu kommt, dass es sich nicht nur um einen Kunden handelt und die Einstellungen dann für einen anderen Kunden wieder hinfällig sind.

Das Routing wird dann vollständig über Angular abgebildet?

Momentan ist es so, dass alle Html Templates in der Datenbank liegen. Nun gibt es eine Prozedur, die einen Benutzer als Parameter entgegen nimmt und dann schaut, ob es für diesen Benutzer auf route X eine Besonderheit gibt. In jedem Fall kommt dann ein Template zurück (Default/Sonderanpassung)

So muss nicht großartig Code angepasst werden. Lediglich das neue Template kommt in die Datenbank und wird dem Benutzer/Benutzergruppe zugeordnet.

Ich habe ehrlich gesagt noch nie gesehen, das Templates über die WebApi ausgeliefert wurden. Läuft dies dann über die HttpResponseMessage?

Nach meinem Verständnis, würde ich dann per Angular eine bestimmte Route "ansurfen" und von der WebAPI ein Template zurück bekommen. Hierbei wird nicht der Virtualpathprovider genutzt, sondern ich implementiere das ganze selbst. Sobald das Template auf dem Client zur Verfügung steht, nutze ich die WebAPI für die Daten zB. im Json-Format. Das heißt, die WebAPI würde Serverseitig das Routing übernehmen.

Sollte das soweit richtig sein, hat jemand vielleicht ein Beispiel, wie ich das Angular Template dann eingebunden bekomme?

21.08.2015 - 18:10 Uhr

Danke erstmal für deine Antwort. Wenn ich mich auf die Web api beschränke, wird das Routing Angluar übernehmen nehme ich an. Ich weiß wie ich über eine Tokenbasierte Authentifizierung den Zugriff auf die API beschränke, allerdings wüsste ich nicht, wie ich so unterschiedliche Views ausliefern könnte.

Zum Beispiel:

Benutzer x möchte bei einem Artikel noch die Charge sehen. Aber für alle ist das nicht Sinnvoll.

Die Benutzer aus Abteilung y möchten ein anderes Layout, weil das Sinnvoller ist.

Momentan wird dieses Verhalten über die Datenbank abgebildet. Ist so etwas bei einer SPA umsetzbar?

Über die Datenbank wäre natürlich am schönsten, weil die Logik bereits besteht, aber ich bin natürlich offen für Verbesserungen.

Danke

21.08.2015 - 17:10 Uhr

Hallo zusammen,

es soll eine bestehende Website auf Angularjs und Asp.net umgestellt werden. Die Datenbanklogik besteht bereits.
Bevor es los geht, würde ich mir gerne ein paar Tipps/Erfahrungen von euch holen.

  1. Nutzt ihr Angularjs mit MVC, Web Api oder gemischt?

Per MVC könnte man die HTML-Seiten mit Daten "vorfüllen", aber Razor und Angular mischen? Gibt es Vor- und -Nachteile auf die ich später stoßen könnte?

  1. Bisher war es ja so, dass man den VirtualPathProvider überschreiben konnte, um die Views z.B. in die DB zu speichern. Ist das auch mit einer SPA möglich? Sinn dahinter ist, dass bisher in der Datenbank pro User/Usergruppen die View angepasst werden konnte.

Danke euch

12.08.2015 - 17:04 Uhr

Vielen Dank, hat mir sehr geholfen.

12.08.2015 - 16:46 Uhr

Danke für die Ausführliche Antwort und den Link. Den Artikel hatte ich als Einführung gelesen, allerdings noch nicht den Code gesehen.

Ich hatte mir bereits AutoMapper angeguckt, in Verbindung mit dem EF im DAL hatte mir Abt allerdings davon abgeraten. Ich habe mich dann dazu entschlossen, das Mapping erstmal von Hand vorzunehmen. Hier nochmal der Link warum Stop using AutoMapper in your Data Access Code

Siehst du also kein Problem wenn ich aus meinem aktuellen "WindowViewModel" eine Auflistung von ViewModels in den BL gebe, hier ein Mapping vornehme, und dann weiter in den DAL zum speichern reiche?

Nehmt ihr in Verbindung mit dem EF (oder überhaupt) 2 Mappings vor ? DAL <-> BL und BL <-> VM?

Mir fehlt scheinbar ein sauberer Weg von Daten aus dem DAL zur View und wieder zurück.

Es geht in diesem Thema nicht direkt um das Entity Framework. 🙂

Danke

12.08.2015 - 13:36 Uhr

Hallo zusammen,

ich hätte nochmal Fragen bezüglich der Architektur (WPF + MVVM)

Datenquelle ist eine Datenbank.

Meine jetzige Architektur sieht so aus:

VM -> BL -> DAL

(Entkoppelt durch DI mit Ninject)

  1. Sollte das ViewModel den BL kennen?

  2. Wird bei einer Auflistung von Daten im "WindowViewModel" eine ObsvC<ViewModel> angeboten, oder eine ObsvC<Model>?

2.a Wenn eine ObsvC<ViewModel> angeboten wird, werden die Model aus dem DAL gemappt in neue VM Objekte? Beispiel: ArtikelModel wird zu ArtikelViewModel und wird ins "WindowViewModel" gegeben.

2.a1 Steht das neue VM Objekt in direkter Beziehung mit dem Model? (Z.B. Wrappt das neue VM das Model?)

2.a2 wo wird das Mapping vorgenommen? BL, oder wird noch eine "kleine Schicht" eingeschoben?

2.a.3 Wenn der Benutzer nun ein ViewModel aus der ObsvC bearbeitet hat, wie wird das Model gespeichert? Wird das VM zurück in das Model gemappt? Wird hierfür als Ausgangspunkt die ObsvC<ViewModel> aus dem "WindowViewModel" genutzt und zum "Mapper" gereicht?

Ich hoffe es sind nicht zu viele Fragen. Es ist nicht so, als würde ich aufgrund der Fragen ein Programm nicht zum laufen bekommen, mir kommt es nur manchmal so vor, als wäre mein Weg nicht gerade zielführend.

Danke euch

10.07.2015 - 09:12 Uhr

Danke für die ausführlichen Antworten. Ich werde mich darauf aufbauend erstmal weiter damit beschäftigen.

09.07.2015 - 17:14 Uhr

Hallo zusammen,

ich spiele seit einiger Zeit mit der TPL - Dataflow library rum und habe eine wahrscheinlich sehr triviale Frage.

Bei welchen Szenarien ist das Producer Consumer Pattern Sinnvoll?

Ich habe ein "real world" Beispiel gesehen, bei dem Bilder konvertiert wurden. Eingesetzt wurde die Blockingcollection.

Es wurde eine Anzahl an Bildern ausgewählt, ein Task hat die Bilder in eine Warteschlange gepusht und 4 Tasks haben entnommen und Konvertiert.

Meiner Meinung nach, hätte man dies auch Problemlos mit einer normalen (Parallelen)Schleife lösen können. Ich erkenne hier einfach nicht den Vorteil.

Würden nach und nach Bilder in ein Verzeichnis gespielt werden und diese automatisiert Konvertiert werden sollen, hätte ich es schlüssiger gefunden, da es viel mehr nach einer Pipeline aussieht.

Könntet ihr mir kurz erklären, wann ihr euch für Producer Consumer entscheidet, bzw. wann der Einsatz wirklich Sinnvoll ist?

07.06.2015 - 16:12 Uhr

Soweit ich verstanden haben dient OWIN der Entkopplung von Webserver und Framework.
Ich werde mich aber nochmal einlesen. Danke

07.06.2015 - 15:45 Uhr

Es würde auf eine Basic-Authentifizierung hinauslaufen. Soweit ich gelesen habe, war ein Package in Planung, wurde aber verworfen, weil es den Sicherheitsstandards nicht genügt. Allerdings brauche ich "keine Sicherheit", sondern es reicht mir, wenn ich den Benutzer anhand des Benutzernamens identifizieren kann.

Benutzer gibt seinen Benutzernamen ein und ich nehme das Mapping zur ConnectionId vor.
Möchte nun Client X etwas von Client Y, braucht er mir nur den Benutzernamen zu geben, und ich hole die ConnectionId aus dem Speicher.

Die Owin Pakete habe ich natürlich installiert und die Kommunikation ist kein Problem (Broadcast, Caller & Others). Ich kann nur nicht einen Client direkt ansprechen und ich denke mal das liegt am fehlenden Authentication-Provider und dem Mapping von Benutzer und ConId. Als ich dieses Mapping vornehmen wollte, ist mir aufgefallen, dass Context.User immer null ist.

Dein Link ist leider nicht mehr gültig und ich hatte mich deswegen unter anderem hier dran orientiert: http://www.codeproject.com/Articles/804770/Implementing-SignalR-in-Desktop-Applications

07.06.2015 - 15:24 Uhr

Entschuldigung die Umgebung ist: C# WPF Client, C# Server (self hosted) und eine dahinter liegende Datenbank.

Die Benutzer liegen dabei in der Datenbank und hier geht es eher weniger um Sicherheit als darum zu wissen um was für einen Benutzer es sich handelt (alles nur Intranet).

Die Frage ist jetzt: Wie bekomme ich am einfachsten eine Verbindung zwischen Benutzer und ConnectionId hin, sodass ich einzelne Benutzer erreichen kann?

Die Daten im Header mitsenden, Cookies, Windows Authentifizierung?

Was ich möchte ist eigentlich: Jeder Benutzer hat einen eindeutigen Benutzernamen und diesen würde ich gerne für das Mapping verwenden, ich weiß aber ehrlich gesagt nicht, wo ich ansetzen kann.

07.06.2015 - 15:02 Uhr

Ich hätte natürlich noch sagen sollen, dass das ganze ohne IIS läuft.

Ich weiß nicht, woher die Identität im OnConnected überhaupt kommt, oder kommen kann?
Muss hier noch eine Authentifizierung erfolgen per Cookie, Token oder ähnlichem?

07.06.2015 - 14:44 Uhr

Das habe ich bereits getan, allerdings ist im OnConnected

Context.User.Identity.Name

bei mir immer null. Ich bin davon ausgegangen, dass hier vorher noch eine Authentifizierung erfolgen muss, bin mir aber natürlich nicht sicher.

Ich hätte hier gerne ein eigenes Mapping zwischen Username und Connection, und über den Username würde ich gerne die ConnectionId bekommen.

Ich könnte wohl etwas eigenes zusammen bauen wie eine "Register(name)" Methode und das Mapping selber vornehmen, allerdings erscheint mir das nicht richtig

07.06.2015 - 14:37 Uhr

Hallo zusammen,

ich habe bezüglich SignalR eine Frage. Es geht darum einen bestimmten Client bei gewissen Ereignissen zu erreichen. Hierzu benötige ich die ConnectionId und in den Beispielen wird hier immer ein Mapping zwischen Connection und User (

Context.User.Identity.Name

) erstellt.

Allerdings hängt

Context.User.Identity.Name

an der Authentifizierung wenn ich das richtig sehe und ist bei mir immer null.

Wie bewerkstellige ich mein vorhaben bzw. die Authentifizierung bei einem C# Client, wenn ich den Benutzer gegen eine Datenbank Abfragen und die ConnectionId entsprechend zum User im Speicher halten möchte)?

03.06.2015 - 20:26 Uhr

Das war lediglich auf das redundante

.where()

aus dem Vorpost bezogen und nicht auf die eigentliche Abfrage. Aber trotzdem danke für die Berichtigung.

03.06.2015 - 20:19 Uhr

Alles klar, das ergibt auf jeden Fall Sinn. Automapper hätte ich auch nicht im DAL gehabt, sondern im BL. Ich würde im BL dann die Entitäten aus der Datenbank über den DAL bekommen und hier ein Mapping für die View vornehmen.

Allerdings scheint laut den Links Automapper nicht die beste Variante für EF zu sein. Bzw. erfordert es sehr viel "undurchschaubaren" Code. Darf ich Fragen wie du/ihr dies in einer WPF + MVVM + EF Anwendung realisiert?

03.06.2015 - 16:33 Uhr

um es kürzer zu halten sollte auch

.FirstOrDefault(x=>x.Email == "dont@ask.me");

direkt gehen 😃

03.06.2015 - 16:27 Uhr

Danke erstmal für eure Antworten.

Umfeld wäre C# + WPF + MVVM + EF6 + MSSQL 2014

Ich denke aber dass sich das Asp.Net Beispiel recht gut übertragen lässt.

Mein vorgehen wäre dann wahrscheinlich wie schon im ersten Post angedeutet:

DAL gibt Entitäten zurück und im BL erzeuge ich mir daraus meine Objekte für die View und reiche diese entsprechend bis ins ViewModel.

Aber wo ist der große vorteil die Objekte von ein paar Properties zu befreien und wie oft kommt es vor, dass eine Entität Daten enthält, die die View nicht braucht?

Mein vorgehen war bisher EF6 CodeFirst und ich habe mir hier überlegt, was ich für Daten brauche. Rausfallen für die View, würde zum Beispiel die entsprechende ID, aber rechtfertigt die ID den Mehraufwand? Kann sich hier vielleicht jemand ein Praxis bezogenes Beispiel eines bestimmten Objektes (z.B. wie oben beschrieben PersonEntität wird zu Person --> was kann wegfallen/kommt hinzu) in diesem Umfeld aus den Fingern "saugen"?

03.06.2015 - 15:01 Uhr

Hallo zusammen,

wie handhabt ihr die Entitäten bezüglich anzuzeigender Daten? Ich lese sehr oft, dass Entitäten nichts im ViewModel verloren haben, leider machen das Microsoft beispiele häufig so. Ich nehme an, dass ihr die Entitäten dann nochmal auf Models für die View mapped
(von mir aus: PersonEntität wird zu Person oder so ähnlich).

Falls ja:

  1. Warum dieser Vorgang? nur weil ein paar Spalten aus der Datenbank nicht in der View gebraucht werden, oder hat das noch andere Gründe? (man könnte per Fluent Api ja auch einige Spalten außen vor lassen)

  2. Wo findet dieser Vorgang statt? --> BusinessLayer?

  3. Benutzt ihr Frameworks wie Automapper dafür?

  4. Hat jemand vielleicht sogar ein Beispiel, wo man sich so etwas angucken und nachvollziehen kann?[/list]

Danke euch 😃

01.06.2015 - 15:09 Uhr

Um was für ein System handelt es sich? Ich finde es komisch, dass die Pfadangaben mit einem / gemacht werden. Für Windows ist \ üblich.

Die InnerException wäre auch noch interessant

30.05.2015 - 18:37 Uhr

Danke für die Hilfe. Ich werde es mir mal ansehen.

26.05.2015 - 19:36 Uhr

Danke für den Hinweis. Ich habe SignalR noch nie in einer Desktopanwendung gesehen und ich wollte mich momentan darauf beschränken. Ist es sinnvoll SignalR in einer WPF-Anwendnung zu nutzen?

Ich werde mich in der nächsten Zeit auf jeden Fall mal damit beschäftigen.

26.05.2015 - 16:35 Uhr

Ich habe erst jetzt in einem Beispiel des Entwicklers gesehen, dass der Server anscheinend einen übergebenen Delegaten vom Client aufrufen kann. So könnte natürlich eine einfache Zuordnung von

ConcurrentDictionary<CliendId, Action<params>>

vorgenommen werden und entsprechend selektiert werden.

Sollte damit erledigt sein

26.05.2015 - 14:22 Uhr

Hallo zusammen,

ich hätte nur eine kurze Frage:

Was ist die beste Möglichkeit bei einem bestimmten Ereignis im Server lediglich einen Client oder nur bestimmte Clients zu Informieren und nicht per Event alle?

Ich hatte im Internet ein Beispiel gesehen, bei dem der Client an den Server übergibt, welchen Client er genau erreichen möchte (logisch). Der Server schleift das einfach durch und schmeißt für alle Clients ein Event. Der passende Client nimmt sich der Anfrage an und alle anderen ignorieren es. Bei dem Beispiel handelte es sich um einen Chat. Ich kann das vorgehen für meinen Anwendungsfall natürlich abbilden, finde die Lösung aber nicht sehr elegant.

Eingesetzt wird das Zyan Framework.

Ich hoffe ihr könntet mir einen kleinen Denkanstoß liefern.

20.05.2015 - 15:42 Uhr

Häng das CanExecuteChanged Event mal an das CommandManager.RequerySuggested.

Ich würde mir das CanExecuteAction auch über den Konstruktor geben lassen und in der public bool CanExecute(object parameter) Methode lieferst du

return CanExecuteAction == null || CanExecuteAction()

zurück

07.05.2015 - 18:59 Uhr

Ich hoffe ich darf hier auch noch einmal einhaken: Wo genau liegt denn der Unterschied zwischen einem POCO einem Model und einer Entität?

Wenn man von MVVM spricht, war ein Model für mich immer ein stumpfer "Datencontainer" z.B. ein Artikel. Der Artikel an sich hat keinerlei Logik in der Klasse und implementiert nur wenn nötig INPC.

Wenn ich per EF nun einen Artikel aus der MSSQL-DB laden möchte. Wo\Was ist mein POCO, meine Entität und was ist mein Model?

Danke

02.05.2015 - 11:45 Uhr

Befindet sich zwischen VM und Repository nicht meistens noch ein BusinessLayer?

27.04.2015 - 20:38 Uhr

Ich verstehe dich so, dass die Navi-Leiste immer sichtbar ist und du je nach ausgewähltem Item aus deiner Navi-Leiste die Ansicht rechts neben deinem Menü anpassen möchtest.

Falls ja, sollte/könnte deine Navi-Leiste eine Liste von ViewModels haben. Per Datatemplate "erklärst" du der UI wie das selektierte ViewModel gerendert werden muss --> hier gibst du dein spezifisches UserControl an. Dein contentcontrol bindest du dann an das selektierte ViewModel aus deiner Navi-Leiste. Je nach ausgewähltem Item ändert sich nun die UI.

24.04.2015 - 16:10 Uhr

und lass das

if(isConnected == true)

Das if erwartet einen boolean und isConnected ist bereits einer. Die Abfrage ist daher unnötig.

21.04.2015 - 13:59 Uhr

Da steckt schon einiges hinter. Das Problem ist, dass dir die Probleme bei einer Datenbank häufig erst später auffallen.

Schau dir mal die Datenbank-Normalisierung an.

Das wäre ein guter Anfang, falls noch nicht geschehen

20.04.2015 - 19:43 Uhr

Danke für deinen Tipp. So hatte ich es umgesetzt und es funktioniert nun auch Problemlos.

Eine Frage hätte ich noch.

Das Problem ist, dass die Objekte aus einer CSV Datei kommen, mit sehr vielen Spalten > 150. Diese Spaltenanzahl ist in jeder Zeile gleich, allerdings sollen immer unterschiedliche Spalten bearbeitet werden können und die Spalten "heißen" pro Datensatz auch anders.

Die Idee war jetzt, verschiedene Usercontrols zu verwenden für die entsprechend unterschiedlichen Bindings (möglicherweise auch die Anzahl der zu bearbeitenden Spalten).

Wie oben beschrieben, funktioniert auch das Problemlos, allerdings recht unflexibel.

Eine Idee war jetzt noch eine Klasse zu haben mit der Anzahl der Spalten als Properties.
Da die bei jedem Datensatz gleich sind, würde dieses Model als Vorlage für alle Datensätze dienen. Nicht ganz so schön für OOP, allerdings sehe ich das Problem noch eine Ebene tiefer bei der CSV-Datei die leider nicht änderbar ist.

Die Properties heißen von mir aus column0 bis column150.

Per reflection und for Schleife kann ich in ein paar Zeilen Code die gesamte csv in den Speicher holen und die Hierarchie abbilden.

Ich bräuchte so auch nur ein ViewModel in das dann mein Model mit den jeweiligen Werten geschmissen wird.

Das einzige was angelegt werden müsste, wäre das Usercontrol und das Binding auf die entsprechende columns.

Auch das zurückschreiben wäre so in ein paar Zeilen Code erledigt.

Mein Problem ist, dass ich das ViewModel per Datatemplate nicht an mehrere UserControls "binden" kann


<Window.Resources>
        <DataTemplate DataType="{x:Type viewModel:RecordViewModel}">
            <ucont:Control1/> <-- Beispiel Namen -->
        </DataTemplate>
        <DataTemplate DataType="{x:Type viewModel:RecordViewModel}">
            <ucont:Control2/>
        </DataTemplate>
        <DataTemplate DataType="{x:Type viewModel:RecordViewModel}">
            <ucont:Control3/>
        </DataTemplate>
        <DataTemplate DataType="{x:Type viewModel:RecordViewModel}">
            <ucont:Control4/>
        </DataTemplate>
    </Window.Resources>

Gibt es hierfür eine Lösung? (Ich kann natürlich eine Basisklasse nehmen, und leere ViewModel anlegen...)

15.04.2015 - 15:29 Uhr

Hallo zusammen,

ich bräuchte mal einen Denkanstoß.

Ich habe eine Datei in der Hierarchische Datensätze vorliegen (maximal 3 Hierarchien). Die Datei ist nicht änderbar und besitzt über 100 Spalten und je nach Datensatz steht in den Spalten etwas unterschiedliches. Diese sollen in einer Treeview landen und bearbeitet werden können. Die Hierachie kann ich anhand einer Kennung ablesen. 110 gehört zu 100, 120 gehört zu 100, 250 gehört zu 200 usw. Hinter der Kennung folgen die Werte.
Die Datensätze sollen nun unter anderem bearbeitet werden können und da für jeden Datensatz andere Werte bearbeitet werden sollen, kann ich nicht einfach eine "statische" UI mit Binding anlegen.

Es muss also je nach selectedItem die UI angepasst werden.

Meine Idee war jetzt per UserContol\ViewModel\Datatemplate und ContentControl je nach ausgewähltem TreeviewItem die UI dynamisch anzupassen.

Mein Problem hierbei ist, dass die Daten zusammen hängen und ich so für jedes UserControl ein eigenes ViewModel hätte.

Genauer:


100
     120
     130
     140
200
     210
     230
     260
300
     310

Wähle ich nun 130 aus, muss ich die UI anpassen, wähle ich 120 muss ich die UI anpassen usw. Insgesamt würde es sich um ungefär 7 Usercontrols handeln.

Wenn ich nun eine Object-Struktur habe, die diese Hierarchie abbildet, wie implementiere ich die dynamische UI in Verbindung mit den ständig wechselnden ViewModels.

Ich nehmen an, dass es eine einfache Lösung gibt und mir Wissen zu WPF/MVVM fehlt.

Ich hoffe ihr habt mich verstanden und könnt mir einen Tipp geben

10.04.2015 - 18:45 Uhr

Vielleicht noch kurz zu Info für die "Nachwelt" wo das Problem lag?

Hilft sonst natürlich keinem anderen 😃

01.04.2015 - 10:14 Uhr

Warum sind alle Daten gleich, bis auf die EAN's ?

Normalerweise könntest du bei einem Join auch mehrere "Bedingungen" angeben.


Select *
From Tabbelle1
inner join Tabbelle2 on Tabbelle2.Spalte1 = Tabbelle1.Spalte1 and Tabbelle2.Spalte2 = Tabbelle1.Spalte2

Eigentlich solltest du so vernünftig selektieren können, was für Daten durch deinem Join zusammengefasst werden

31.03.2015 - 15:21 Uhr

RESTful APIs basieren meistens auf dem HTTP-Protkoll und können sehr gut mit der Web-API erstellt werden und nicht nur mit der WCF.

Der letzte Beitrag liest sich meiner Meinung nach so, als würde dies nur mit der Windows Client Foundation gehen.

24.03.2015 - 16:34 Uhr

Nur weil immer die ersten 4bytes die Länge der gesamten gesendeten Daten beschreiben, heißt das nicht, dass du nur eine bestimmte länge haben kannst/darfst.

Du solltest du zusätzlich das Beispiel von dem MSDN mal ansehen:

TcpListener-Klasse

Insbesondere der Teil: " // Loop to receive all the data sent by the client."