Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Rabban
Thema: Battle Simulator - Ein Online-Strategiespiel
Am im Forum: Projekte

Muss ich leider bestätigen. Im letzten noch voll funktionsfähigen Opera (12.17) läufts nicht.
Und das Design sieht am Anfang arg zerschossen aus, da sich eine Art Dialogbox direkt links oben in die Ecke legt. Diese kann man zwar wegdrücken und einige Sachen auswählen, aber zum Spielfeld kommt man nicht.

Thema: Trennung der Schichten zur Businesslogik (Services) und Daten (Repository Pattern) ASP.net MVC5
Am im Forum: Web-Technologien

Hallo Gongo82,

Warum dein Update nicht funktioniert, kann ich Dir leider nicht sagen, da ich keine Erfahrung mit dem Persister habe den du nutzt. Aber ich kann dir ein paar allgemeine Tipps geben.

Dein DAL sieht schonmal ganz gut aus. Allerdings nutzt man hier keine BOs zum speichern sondern DAOs(Data Access Object). Dies wird dann normalerweise als Domain bezeichnet.

BLL sieht soweit auch gut aus, aber der BLL holt sich aus dem DAL die DAOs und wandelt diese bei bedarf in Business Objects um. Das kommt daher das bestimmte Beziehungen zwischen den DAOs sehr kompliziert sein können. Was wiederum sehr auf die Perfomance gehen bzw. Superfluous Update erzeugen kann. Desweiteren sollten DAOs nur die Daten und keinerlei Logik enthalten.
Um die Logik kümmert sich dann die BOs bzw. der BLL.
Das heisst jetzt nicht das du bei jeder kleinen Aktion im BLL alle DAOs in BOs umwandeln sollst, sondern nur bei komplizierten Vorgängen, dies musst du aber von Fall zu Fall selber entscheiden.

Die UI kann je nach Bedarf auf den DAL bzw. auf den BLL zugreifen um sich die Daten zu holen die man anzeigen will. Hierbei ist aber auch wieder drauf zu achten das keine BOs oder DAOs an die View geschickt werden, das kann sehr unerwartete Fehler erzeugen die man vermeiden kann, indem man ViewModel nutzt. Dafür steht übrigens auch das "M" in MVC^^

Um die die Arbeit mit den ViewModeln bzw. den BO zu erleichtern, kannst du AutoMapper nutzen, das nimmt dir dabei sehr viel langweilige Arbeit ab. Einfach mal Google danach fragen.

Falls du den DAL komplett von deinen Controllern fernhalten willst, so kannst du auch für deine Logik Interfaces und eine StandardLogik nutzen, so wie du es mit dem BaseRepository machst.

Als weiteres würde ich dir noch IOC (Inversion of Control) ans Herz legen z.B. CastleWindsor. Das Ding ist regelrecht gemacht für MVC Anwendungen.

Und als letzten Hinweis: Bitte überdenke dringend die Benennung deiner Klassen.
"tbl_Seminar_Typ" Widerspricht fast jeder Konvention in Sachen Benennung :D
Benenne die Klassen nach ihrer Funktion und ohne Unterstriche. Wenn du dich an das hälst was ich oben geschrieben habe, dann wäre "SeminarEditModel" eine passende Bezeichnung.

Viel Erfolg
Rabban

Thema: WCF: Fehler beim Empfangen der HTTP-Antwort …
Am im Forum: Netzwerktechnologien

Hier der reparierte Link von Abt:

Zitat
http://www.hanselman.com/blog/ReturningDataSetsFromWebServicesIsTheSpawnOfSatanAndRepresentsAllThatIsTrulyEvilInTheWorld.aspx

Der Link lässt sich leider nicht in die URL-Tags packen, da das Forum immer ein "<br />" mit reinsetzt.

Thema: NHibernate Session
Am im Forum: Datentechnologien

Hallo ilcsh,

den Select N + 1 solltest du bei einer normalen Abfrage eigentlich nicht bekommen. Wenn dann tritt er anschliessend auf, wenn du mit der Entität arbeitest.
Lies dir am besten nochmal genau die Beschreibung von Select N + 1 durch, zusammen mit dem Profiler solltest du die Stelle dann recht schnell finden.


Was der Profiler zwar nicht anmeckert, mir aber negativ auffällt ist, das die Entität "Roles" heisst und somit suggeriert das sich mehrere Rollen darin befinden,
die Property heisst aber "Role", womit du widerum suggeriest das es doch nur eine Rolle ist. Hier solltest du eindeutiger benennen.

Desweiteren nennst du den Identifier "rID" was sicherlich für RoleID stehen soll.
Dies ist überflüssig, da jede Entität immer nur einen Identifier ID hat. Bei ForeignKeys ist die Benennung dann wieder sinnig, aber auch hier würde ich dir empfehlen sprechendere Bezeichnungen zu wählen.

Thema: myCSharp.de ist 10 Jahre jung
Am im Forum: Ankündigungen

der passt doch super auf der Nase^^

Thema: myCSharp.de ist 10 Jahre jung
Am im Forum: Ankündigungen

Hui, dann will ich aber auch nicht fehlen:

Herzlichen Glückwunsch und ein dickes Lob ans ganze Team und die Community ;)

Thema: alle Dateien des Typs .ink ermitteln [==> mit .lnk klappt es, also L statt i]
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo dcpacky,

was klappt denn nicht?

MfG
Rabban

Thema: Vergleichen 2er CSV Dateien
Am im Forum: Datentechnologien

Noch als Tipp, zum Einlesen von csv dateien würde ich immer FileHelpers benutzen.

MfG
Rabban

Thema: TextFile bearbeitet und nun (ohne zwischenspeichern) "SQL Befehle" einfügen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo g0su,

in String-Klasse steht eigentlich alles wichtige drin.

MfG
Rabban

Thema: ASP.NET MVC und Entity Framework unzertrennlich?
Am im Forum: Rund um die Programmierung

S#arp Lite ist ein schönes Framework das NHibernate nutzt. Wirf einfach mal nen Blick drauf.

MfG
Rabban

Thema: maxUrlLength erhöhen Wirkungslos
Am im Forum: Web-Technologien

Hallo schuppsl,

wenn ich mich nicht täusche, unterstützt http keine Urls die länger als 264 Zeichen sind.

MfG
Rabban

Thema: zu schnelles/häufiges Aktualisieren der Oberfläche verhindern
Am im Forum: GUI: Windows-Forms

Wieso sollten die Daten zum schluss abgeschnitten sein?
So wie ich es skizziert habe, sind alle Daten zum Schluss vorhanden und auch in der GUI.

MfG
Rabban

Thema: beliebige Dokumente über Webservice drucken
Am im Forum: Rund um die Programmierung

Zitat von inflames2k
Sind wir hier nicht wieder bei genau der gleichen Situation?
Eigentlich nicht. Du hast vorher geschrieben das du das Byte-Array direkt an den Drucker gesendet hast, dies bringt aber nichts da der Drucker daraus keine verwertbare Datei machen kann.
Wenn wir z.B. mal PDFs nehmen, so wirst du nicht drum herum kommen, eine externe Komponente zum drucken zu benutzen. Je nachdem welche du wählst, kannst du dieser auch Streams übergeben und somit deine gewünschte Datei drucken.
Deshalb ist es aus meiner Sicht nicht erforderlich die Dateien zu speichern.

MfG
Rabban

Thema: zu schnelles/häufiges Aktualisieren der Oberfläche verhindern
Am im Forum: GUI: Windows-Forms

Zitat von Crone
Du würdest damit sogesehen die Ladezeit künstlich erhöhen
Das sehe ich nicht so. Seine Aufgabe kann der GUI einfach mitteilen wenn die Aktion abgeschlossen ist, die löst eine letzte Aktualisierung aus und schon ist das GUI wieder synchron.

Der Weg den Crone aufgezeigt hat, geht natürlich auch, allerdings stellt er viel weniger Informationen dar, es hängt also ab ob man so viel benötigt oder nicht.

MfG
Rabban

Thema: beliebige Dokumente über Webservice drucken
Am im Forum: Rund um die Programmierung

Du brauchst die Dateien nicht speichern, eigentlich sollte es reichen wenn du die Dateien als Stream vorrätig hälst.

Thema: beliebige Dokumente über Webservice drucken
Am im Forum: Rund um die Programmierung

Hallo inflames2k,

ich glaube nicht das man jede beliebige Datei einfach so drucken kann. Du solltest schon vorher definieren welche Dateitypen du bekommen kannst um dann ensprechend den Drucker anzusprechen. Was bringt es dir z.B. die Bytes eines PDFs an den Drucker zu schicken? Der kann doch daraus nicht wieder den inhalt herstellen und dann dann einfach drucken.
Ich musste vor ein paar monaten ein ähnliches Tool realisieren, aber da haben wir uns dann auf PDFs und Textdateien geeinigt.

MfG
Rabban

Thema: zu schnelles/häufiges Aktualisieren der Oberfläche verhindern
Am im Forum: GUI: Windows-Forms

Hallo Froggie,

Ein Timer oder Backgroundworker wäre schon der richtige Ansatz, übertrage deine Infos einfach wie gewohnt mehrmals in der Sekunde über die Events aber aktualisier die Controls in deiner Form nur 1 mal in der Sek.

MfG
Rabban

Thema: Wie erstelle ich automatisch einen Bericht bzw. Serienbrief?
Am im Forum: Rund um die Programmierung

Hallo Chrizzo84,

das Berichttool von VS ist meiner Meinung nach nicht so dolle, du kannst dir aber alternativ mal CrystalReports ansehen, das gibts auch in einer kostenlosen Version für VS, oder wenn du etwas Geld investieren magst, kann ich dir Telerik sehr ans Herz legen.

MfG
Rabban

Thema: Timer-Event wird mehrfach ausgelöst
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Timer-Klasse (System.Timers)
Schau dir dazu mal die "Start()"-Funktion und "AutoReset"-Eigenschaft an, gepaart mit dem was Jamikus gesagt hat.

MfG
Rabban

Thema: Primary Keys
Am im Forum: Datentechnologien

Hallo chanderegg,

aus deiner Beschreibung ist leider nicht viel raus zu lesen. Welchen Sinn würdest du denn darin sehen einen PK aus 3 verschiedenen Schlüsseln zusammen zu bauen?
Grundsätzlich ist ein PrimaryKey ein durchlaufender Zähler, ganz unabhängig für welche inhaltlichen Daten er benutzt wird.

MfG
Rabban

Thema: Timer-Event wird mehrfach ausgelöst
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Maliko,

wie Jamikus schon richtig erkannt hat, rufst du "Actualisation" immer wieder nach dem starten das BackgroundWorkers auf. Laut deiner Beschreibung sollte das ganze wohl sequenziel abgearbeitet werden, aber durch den aufruf vom BackgroundWorker ist das ganze nebenläufig.
Packe einfach die Funktion, die der Worker abarbeiten sollte in "activationTimer_Tick" und dann sollte es passen.

MfG
Rabban

Ps: ein kurzes debuggen von "activationTimer_Tick" hätte dir eigentlich zeigen müssen, das er den Timer sofort wieder startet.

Thema: Der Fehler:Meta data ***** können nciht abgerufen werden
Am im Forum: Web-Technologien

Zitat von Karill Endusa
Wenn ich für jede Entity das Ganze von Hand machen müsste, geht mir einiges an Zeit flöten
Diesen Aufwand sehe ich jetzt nicht so. Wir haben hier auch einige größere Webprojekte in unserem Haus und erfahrungsgemäß müssen wir eh die meisten Views nochmal anfassen, bzw. komplett überarbeiten. Somit ist, aus meiner Sicht, die Zeitersparnis minimal, da die Vorlage nur die Dateien anlegt.
Wenn du dir aber Zeit sparen willst, dann kannst du doch mit Snippets arbeiten, die genau das gleiche für dich machen. Dann ist dein einziger Aufwand, die Dateien anzulegen.

MfG
Rabban

Thema: Textdatei mit bestimmtem Datenformat (mit Schlüsselworten) parsen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zitat von Bruce1989
ich glaub das klappt auch nicht
nicht glauben! Regex ist ein sehr mächtiges Werkzeug, wenn auch am Anfang sehr verwirrend. Also lies dir das tutorial durch, und du wirst sehen, so schwer ist das nicht.

MfG
Rabban

Thema: Der Fehler:Meta data ***** können nciht abgerufen werden
Am im Forum: Web-Technologien

Hallo Karill Endusa,

Warum erstellst du nicht von Hand eine Klasse die sich von "Controller" ableitet?
Wenn ich mich nicht täusche ist "Controller hinzufügen..." nichts anderes als eine Vorlage die ein bißchen Schreibarbeit erspart.

Mfg
Rabban

Thema: existiert ein "alle foren als gelesen markieren" ?
Am im Forum: Wünsche und Kritik

http://www.mycsharp.de/wbb2/forum.php
Ganz oben in der mitte, und das gleiche gibts nochmal für jedes Unterforum.

MfG
Rabban

Thema: Datenzuweisung dauert zu lange
Am im Forum: Datentechnologien

Hallo Tossi65,

kann es sein das du mit "dr" auf eine Lazy-Property zugreifst und er sich die Daten erstmal noch aus der DB holen muss? Wenn ja, dann musst du die Sachen nur Eager laden.

MfG
Rabban

Thema: simple Datenbank Erstellung/Verwaltung
Am im Forum: Datentechnologien

Zitat von Tac
Zur Nutzerverwaltung in der Programmlogik, dann kann ich die Formular Aufrufe ja sicher nicht über den "Bindingnavigator"(Siehe Anhang) abwickeln, wo/wie kann ich denn in der Programmlogik meine Datenbank Werte abrufen?(auch hier versuche ich mich mal selber schlau zu machen)
Ich persönliche arbeite nicht mit solchen Bindungen, die nehmen dir zwar viel arbeit ab, aber auch viel Kontrolle, deshalb nutze ich NHibernate. Dort kannst du dir explizit die benötigen Rechte deines angemeldeten Benutzers einfach aus der DB laden und dann entsprechend handeln.

Falls du nocht nicht weißt was ein O/R-Mapper ist, würde ich mich an deiner Stelle auf jedenfall mal reinlesen.

Zitat von Tac
Das Formular soll eigentlich eine Art Wochen "Tagebuch" darstellen, d.h. hatte ich erst gedacht ich speichere die einzelnen Tage mit gemeinsamen "Wochen-Datum"(Erster Tag der Woche) aber dann werde ich wohl jedes Formular gesamt speichern mit den Werten:
Ich würde nur jeden einzelnen Termin speichern und nicht komplette Tage. Das ganze würde als Poco in etwa so aussehen:


public class Termin
{
	/// <summary>
	/// Jede Entität braucht eine Id
	/// </summary>
	public long Id { get; set; }

	/// <summary>
	/// Der Zeitpunkt des Termins mit Uhrzeit.
	/// </summary>
	public DateTime DateTime { get; set; }

	/// <summary>
	/// Eine Beschreibung des Termins
	/// </summary>
	public string Beschreibung { get; set; }
}

Natürlich gehören da noch der Benutzer rein und alle anderen Infos die du für den Termin brauchst, aber im groben und ganzen reichen die 3 Informationen aus um einen Termin zu erstellen.

MfG
Rabban

Thema: simple Datenbank Erstellung/Verwaltung
Am im Forum: Datentechnologien

Hallo Tac,

als erstes würde ich dir empfehlen einen O/R-Mapper zu nutzen, die bekanntesten sind NHibernate und Entity Framework, schau einfach mal ob dich einer davon anspricht.

Zitat von Tac
Ich habe jetzt nur das Problem, dass Visual meine Primärschlüssel-Kombination aus Name/Wochen-Anfangsdatum/Wochentag irgendwie nicht so akzeptieren will wie ich das gerne hätte.
Als nächstes würde ich dir davon abraten solche wilden Schlüsselkombinationen zu nutzen, benutze einfach einen int bzw. long für die ID, es sei denn es ist zwingend notwendig solche zusammen gesetzten Schlüssel zu nutzen, aber die Notwendigkeit sehe ich zumindest in deiner Beschreibung nicht.

Zitat von Tac
Des Weiteren würde ich eigentlich gerne in dem gesamten Programm eine Benutzer-Verwaltung mit verschiedenen Rollen und Zugriffsrechten auf die Datenfelder einbauen. (Also Benutzer X kann nur Einträge mit seinem Namen sehen, Benutzer Y kann alle sehen)
Sowas löst man über die Programmlogik und nicht über die Datenbank. In der DB exisitiert normalerweise nur ein Benutzer der alle schreibrechte hat und dein Programm meldet sich dann als dieser Nutzer an. Es macht nur selten Sinn alle Benutzer deines Programms als eigenständige Benutzer der Db anzulegen.


Die Exception die du bekommst, sagt etwas anderes als deine Aussage, ich würde die Exception auch so interpretieren das du vergessen hast ein bestimmtes Feld zu füllen. Schau dir mal die ExceptionDetails an, da sollten weiterführende Infos drin stehen.

MfG
Rabban

Thema: Visual Studio crasht ab und zu bei Codeänderungen
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Ich hab ab und zu ein ähnliches Verhalten in VS2010 Prof.
Bei mir scheint es an der Erweiterung "Productivity Power Tools" von MS zu liegen. Eventuell ist es bei dir ja was ähnliches.

MfG
Rabban

Thema: Automatischer Programmstart mittels Dienst oder Scheduled Task ohne angemeldeten Benutzer
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo riehol,

ich würde, wie da anderen schon gesagt haben, die komplette funktionalität in einen Dienst legen.
Diesem Dienst solltest du dazu noch einen kleinen WCF-Service implementieren, der vom Hauptprogramm die einstellungen entgegen nimmt, wie Uhrzeit der automatischen ausführung, etc....
Ich würde sogar so weit gehen das die komplette Funktionalität nur im Dienst stattfindet und dein GUI-Programm nur die Schnittstelle dazu darstellt. Also wenn du ein Backup über deine Gui-Anwendung ausführen willst. Das diese den Auftrag an den Dienst schickt und er sie ausführt.

MfG
Rabban