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 m.grauber
Thema: WPF: Code für mehrere WPF-Fenster wiederverwenden
Am im Forum: GUI: WPF und XAML

Hallo Mr. Sparkle,

ich weiß, MVVM wird mich sicher mein ganzes Leben "verfolgen" ;( aber hilft mir in diesem Fall wahrscheinlich auch nichts.

Zumal ich dieses erste, kleinere Programm nicht dafür komplett umbauen möchte.

Die Funktionalität hat in diesem Fall nichts mit den Daten zu tun, sondern mit Features, die ich bestimmten Fenstern vergeben möchte. Somit könnte ich in 2 verschiedenen Fenstern die gleiche Datenbasis bearbeiten, aber in nur 1 Fenster davon hätte ich gerne eine bestimmte Funktionalität hinterlegt.

Thema: WPF: Code für mehrere WPF-Fenster wiederverwenden
Am im Forum: GUI: WPF und XAML

Hallo Zero_x,

unter WPF kann man von fast allen UIElementen ableiten, jedoch unter anderem nicht von einem WPF Window. (Man kann aber scheinbar nur den Umweg über ein Control machen)

Aber selbst wenn das klappen würde, könnte ich nur von einem Parent vererben, da WPF nur ein Parent unterstützt. Ich hätte aber gerne mehrere (teils gemischte) "Parents".

Thema: WPF: Code für mehrere WPF-Fenster wiederverwenden
Am im Forum: GUI: WPF und XAML

Hallo,

wie kann ich bestimmte Methoden und Eigenschaften in C# als "Muster" definieren und dann in beliebigen WPF-Fenstern im XAML-Code zuweisen und im Codebehind nutzen?

So ähnlich würde ich gerne definieren, welches Muster (oder welche Muster) in einer Form verwendet werden sollen:


<Window x:Class="MyProject.Test" : "MyClass.Muster1", "MyClass.Muster2"
...
</Window>

So ähnlich würde ich gerne das Muster definieren:


public class Muster1
{
   public String Tempstring = "";
   public int TempId = 0;

   public void MyWindowClose ()
   {
       this.Close()
   }
}
public class Muster2
{
  public String Tempstring2 = "";
}

Die Muster sollten nicht im Fenster selbst, sondern allgemeingültig in einer Klasse (z. B. MyClass) definiert werden. Im Programmcode müsste trotzdem auf das Fenster verwiesen werden können - siehe: this.Close() - obwohl es dort noch nicht an das Fenster gebunden ist.

Zudem wird durch die Zuweisung von "Muster1" dem Fenster die 3 Member auf einmal zugewiesen.

Ich möchte die Methoden nicht pro Fenster jeweils neu ausprogrammieren müssen, sondern es soll der hinterlegte Code genutzt werden.

Das ganze soll natürlich auch sehr einfach anzuwenden sein

Fällt Euch dazu etwas ein? ?(

Danke und Grüße

Thema: [erledigt] Automatisiert Datenbank beim Kunden erstellen - ohne externe Tools
Am im Forum: Datentechnologien

Nein, sorry, das war mein Fehler - ich hatte nichts von WPF erwähnt.

Grüße

Thema: [erledigt] Automatisiert Datenbank beim Kunden erstellen - ohne externe Tools
Am im Forum: Datentechnologien

Danke für die rege Diskussion,

ich komme jetzt erst wieder dazu, weil ich ein Connection-Problem zum Server hatte.

Also ich sehe es so: Es gibt immer verschiedene und gangbare Wege nach Rom.

Jeder muss selbst abwägen, welchen Weg er wählt. Beide Wege haben für mich einen Reiz. Wenn man nur Datenbanken für den SQL-Server (und vielleicht noch eine andere DB) erstellen möchte, kann man sicher auch den Weg über die Scriptvariante gehen, die auf den ersten Blick sicher die einfachere und die mit weniger Gesamtcode ist.

Da ich momentan sehr wenig Tabellen und sehr wenig Zeit habe und mit dem Script-Weg bereits begonnen hatte, werde ich vorerst diesen Weg gehen - aber mir sicher Fluent Migrator nochmals genauer ansehen. Zumal man wirklich den Code "in den Händen" hat. - Der Code von FZelle wirkt ja auch sehr elegant.

Die Unterstützung von verschiedenen Datenbanksystemen möchte ich mir jederzeit offen halten, jedoch ist der Test- und Supportaufwand für mich derzeit nicht zu stämmen, weshalb ich mich auf den SQL-Server vorerst beschränken werde.

Zum Thema "Strick-Gefrickl": Ich finde diese Idee trotzdem immer noch sehr gut, weil sie mich auch auf Ideen gebracht hat, auf die ich sicher nicht gekommen wäre. Auf der anderen Seite ist der Einwand mit verbundenen Einschränkungen auch sehr hilfreich.

Fazit: Ich finde es einfach toll, wie in diesem Forum nach allen Seiten diskutiert werden kann!

An BerndFfm: Ich habe das WPF-Event "Shown" leider nicht gefunden. Heißt das irgendwie anders?

Danke

Thema: [erledigt] Remotezugriff auf SQL-Server Express 2008 R2 klappt nur intern
Am im Forum: Datentechnologien

Hallo Khalid,

ich habe nun den SQL-Server Express nochmals komplett deinstalliert, erneut installiert und schau her: Alles die komplett gleichen Einstellungen und läuft auch extern!!!

Ich bin momentan wirklich etwas durcheinander und hoffe, dass mir das nicht bei Kunden passiert.

Vielen Dank nochmals für Deine Hilfe!

Thema: [erledigt] Remotezugriff auf SQL-Server Express 2008 R2 klappt nur intern
Am im Forum: Datentechnologien

Danke Khalid,

- einen Router zwischenhängen, der den Netzverkehr beeinflusst?
> ja, da wird aber die externe IP mit externem Port 1433 auf die interne IP mit internem Port 1433 weitergeleitet.

- mal in das SQL Server Log geschaut? (Bin mir aber gerade nicht sicher, ob man
das beim Express einsehen kann)
> ja, das gibt es auch, aber die Anmeldeversuche sind nicht sichtbar. Man sieht nur, wann der Server und die Dienste neu gestartet werden etc.

- mal in das Windows Event Log geschaut?
> auch dorthinein habe ich geschaut und die Anmeldeversuche sind ebenfalls nicht sichtbar.

Aber er kommt definitiv zum SQL-Server durch, da er, wenn ich im SQL Server Management-Studio testhalber die Verbindungseinstellungen auf "Verbindung verschlüsseln" ändere, sofort die korrekte Fehlermeldung kommt:

Zitat
Die Instanz von SQL Server, mit der Sie sich verbinden möchten, unterstützt keine Verschlüsselung. (Microsoft SQL Server, Fehler: 20)

Er erkennt also, das dies nicht möglich ist.

D. h. der SQL-Server trennt wahrscheinlich selbst die Verbindung wieder. Nur warum? Die Trennung (+ Fehlermeldung*) passiert immer sehr schnell (<1 Sek.)
Zitat
Fehlermeldung: *
Es konnte eine Verbindung mit dem Server hergestellt werden, doch während des Anmeldevorgangs trat ein Fehler auf. (provider: TCP-Provider, error: 0 - Eine vorhandene Verbindung wurde vom Remotehost geschlossen.) (Microsoft SQL Server, Fehler: 10054)

Wie gesagt, über die Interne IP klappt es - jedoch auch nur, wenn der Port nicht angegeben ist.

Ich bin wirklich ratlos

Thema: [erledigt] Remotezugriff auf SQL-Server Express 2008 R2 klappt nur intern
Am im Forum: Datentechnologien

Hallo Khalid,

Danke! Ja, ich hatte bereits den eingedeutschten Artikel aufgerufen. Momentan existiert bei meinem SQL-Express scheinbar noch kein Zertifikat.

Ist das notwendig?

Hier die "deutsche" Version: http://support.microsoft.com/?kbid=919710

Da stand so ein Unsinn, daher hatte ich das bereits wieder weggeklickt:

Zitat
Führen Sie an einer Eingabeaufforderung den folgenden Befehl aus:
Certutil - Informationsspeicher - V Meine - CertificateSerialNumber

Automatische Übersetzung: "- Informationsspeicher" Nein Danke!

Jetzt kommen wir schon weiter:

Der 2008er Server ist momentan nicht als Domäne, sondern als Arbeitsgruppe konfiguriert.

- Benötigt man eine Domäne, dass der Zugriff auf den SQL-Server per Remotezugriff klappt und nicht immer sofort wieder abgebaut wird?

Unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib befindet sich ein Key "Certificate", nur der ist leer.

- Klappt der Zugriff auf den SQL-Server per Remotezugriff nur, wenn ein Zertifikat vorhanden ist? Falls ja, wie bekomme ich dort mein Zertifikat hinein?

- Ich habe aber gelesen, dass Microsoft es nicht empfiehlt, SQL Express auf einen Domänenserver zu installieren. Grund wurde nicht angegeben. Ich weiß nun nicht, ob das den Grund Kompabilität oder Marketing (Verkauf SQL-Server Big Edition) hat.

Vielen Dank für diese vielleicht dummen Fragen!

Grüße

Thema: [erledigt] Remotezugriff auf SQL-Server Express 2008 R2 klappt nur intern
Am im Forum: Datentechnologien

Ja, das Komma ist beim SQL-Server schon richtig.

Ist es überhaupt sichergestellt, dass man auf eine Express-Edition von einem nicht im Netzwerk befindlichen Rechner über eine externe IP zugreifen darf?

In der Express-Edition ist ja der SQL-Server Agent deaktiviert und kann nicht genutzt werden. Ist der Agent für den Remotezugriff vielleicht notwendig?

Grüße

Thema: [erledigt] Remotezugriff auf SQL-Server Express 2008 R2 klappt nur intern
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <SQL-Server 2008R2 Express>

Tausendfach wurde dieses Thema bereits diskutiert. Ich habe es aber trotzdem. X(

Der interne Zugriff (z. B. per SQL-Server-Management-Studio) funktioniert, aber der Zugriff über das Internet von einem entferntem Rechner nicht.

Externe IP des Servers: EEE.EEE.EEE.EEE
Externer Port des Servers: EP

Interne IP des Servers: III.III.III.III
Interner Port des Servers: IP (=1433 Standardport)

In der managed Firewall wurde der Port EP für Incoming geöffnet und eine Route zum Internen SQL-Server-Port IP gesetzt (für SQL-Server)

Die Windows-Firewall des Servers ist deaktiviert.

Folgendes habe ich beachtet:

Auf Server im Config Manager:
- SQL Server und SQL Server Browser laufen beide (Integriertes Konto jeweils: Netzwerkdienst)
- Alle Protokolle (auch TCP/IP) sind aktiviert, Standardport IP
- Lokale Windows-Firewall ausgeschalten
- Beim Anmelden wurde die Instanz angeben \SQLEXPRESS
- Remotezugriff wurde in der Datenbank erlaubt
- Authentifizierung steht auf "gemischter Modus"
- Besitzer der DB sind gesetzt und mit Passwort versehen
- SynAttackProtect in Registry gesetzt

Der Zugriff klappt nur über die Interne IP und dort problemlos!

Beim Versuch über die Externe IP zu gehen erhalte ich folgenden Fehler:

Zitat
Es kann keine Verbindung mit 'EEE.EEE.EEE.EEE,EP\SQLExpress' hergestellt werden.

Es konnte eine Verbindung mit dem Server hergestellt werden, doch während des Anmeldevorgangs trat ein Fehler auf. (provider: TCP-Provider, error: 0 - Eine vorhandene Verbindung wurde vom Remotehost geschlossen.) (Microsoft SQL Server, Fehler: 10054)

Hilfe erhalten Sie durch Klicken auf: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer&EvtID=10054&LinkId=20476

Er sagt mir also, dass er die Verbindung bereits aufgebaut, aber aus irgendeinem Grund wieder abgebaut hat. Über die interne IP III.III.III.III klappt es scheinbar. Seltsam ist weiterhin, dass wenn ich den Standardport mit angebe, es intern auch nicht klappt: III.III.III.III,IP\SQLExpress

Was kann das sein? Ich habe überall nur die Standardantworten gefunden.

Der Server ist ein 2008R2 64bit mit SQL-Express 2008R2 64bit und der Client ist ein 32bit-Vista mit 32bit SQL-Server 2008R2 Management Console (nicht Express-Version)

Vielen Dank!

Thema: [erledigt] Automatisiert Datenbank beim Kunden erstellen - ohne externe Tools
Am im Forum: Datentechnologien

Hallo FZelle!

vielen Dank - das hatte mich so gewundert.

Also dann packe ich alles dort rein.

Danke!

Thema: [erledigt] Automatisiert Datenbank beim Kunden erstellen - ohne externe Tools
Am im Forum: Datentechnologien

Hallo MarsStein,

Wow! X( Das scheint ja richtig tricky zu werden; nur um den Bildschirm zu aktualisieren. Ich arbeite mich gerade durch einige Infos durch.

Wenn die Threads beim Erstellen der Datenbank nicht der Reihe nach abgearbeitet werden, könnte man u. U. z.B. ein Index auf ein Feld setzen, was erst in einem später abgearbeiteten Thread angelegt wird. Das ist dann nicht mehr lustig. - Insbesonders nicht, wenn es in der Testumgebung immer klappen sollte und beim Kunden dann an der Stelle schief läuft.

Vielleicht "trickse" ich ja doch lieber. Das Argument gegen ein manuell erstelltes DoEvents ist ja scheinbar lediglich, dass ich verhindern muss, die Form zu schließen, während die Schleife noch läuft. Dies ist ja einfach möglich. Und: das gleiche Problem hätte ich auch, wenn alles per einzelne Threads gemacht würde. Da sollte das Fenster auch nicht geschlossen werden.

Zudem würde ich sehr viele und kleine Threads hintereinander starten müssen. Das ist doch reine Ressourcenverschwendung.

Mal sehen, ob mir jemand zustimmt; Die Meinungen im Forum tendieren ja eher zum Thread.

Grüße

Thema: [erledigt] Automatisiert Datenbank beim Kunden erstellen - ohne externe Tools
Am im Forum: Datentechnologien

Hallo FZelle,

ja auch Dir vielen Dank für die Hilfe!

Ich habe nur etwas Zeit benötigt mir das Werkzeug anzusehen und bin auch noch nicht ganz durch.

Da es ja scheinbar komplett als Quellcode vorliegt, ist es auch noch später anpassbar, also keine "BlackBox" und auch keine EXE. Das gefällt mir daran.

Zudem können verschiedene Datenbanksysteme damit gemanaged werden.

Bis ich da aber komplett durchsteige, brauche ich etwas Zeit. Erst dann kann ich mich für einen bestimmten Weg entscheiden.

Danke auch noch für die Links zum Refresh - Natürlich ist der Aufruf mal wieder etwas aufwändiger. Ich hoffe nur, dass durch die zusätzlichen Threads, die hintereinander erstellt werden, nicht die Rechnerauslastung ins Höchste steigt.

Außerdem hoffe ich, das die Threads nicht von .NET aus irgendwelchen Performancegründen vertauscht werden, sondern brav der Reihe nach abgearbeitet werden.

Vielen Dank nochmals an alle!

Thema: [erledigt] Automatisiert Datenbank beim Kunden erstellen - ohne externe Tools
Am im Forum: Datentechnologien

Hallo witte,

nein, eigentlich versuche ich auf StoredProcedures komplett zu verzichten. - Die sind ja oft ein Problem. Aber Danke für den Hinweis!

Grüße

Thema: [erledigt] Automatisiert Datenbank beim Kunden erstellen - ohne externe Tools
Am im Forum: Datentechnologien

Hallo MarsStein und BerndFfm,

vielen Dank nochmals!

Ich werde nun doch ntext statt nvarchar(max) nutzen, da der 2000er SQL-Server schon laufen muss. Sobald das bei einer neuen SQL-Server-Version nicht mehr möglich ist, muss ich allerdings umstellen.

Die Split-Variante ist sehr interessant! 8o Cool gelöst!

Nur ein klitzekleines Problem habe ich noch: Wird die Datenbankerstellung im Window-Loaded ausgeführt, sehe ich nur ein schwarzes Fenster und keine Aktualisierung. In welches Event muss ich den Code schreiben, damit das Fenster bereits vorher aufbaut und während des Durchlaufs aktualisiert werden kann?

Vielen Dank nochmals!

Grüße

Thema: [erledigt] Automatisiert Datenbank beim Kunden erstellen - ohne externe Tools
Am im Forum: Datentechnologien

Hallo MarsStein und BerndFfm,

vielen Dank

Also habt ihr das Script in einzelne Befehle zerlegt und ruft es in C# jeweils auf. Das ist zwar etwas Arbeit, aber wahrscheinlich auch die zukunftssicherste Variante.

Dann bin ich froh, das ich nicht auf dem Holzweg bin.

Noch 1 Frage:

nvarchar(max) gibt es noch nicht auf dem SQL-Server 2000. Würdet ihr für die Abwärtskompabilität stattdessen ntext nehmen oder dies auf gar keinen Fall mehr nutzen? Ich nehme an, dass ich keine 2 Varianten einer Datenbank möglich machen sollte?

Vielen Dank!

Grüße

Thema: [erledigt] Automatisiert Datenbank beim Kunden erstellen - ohne externe Tools
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <SQL-Server 2000-2008R2>

Ich habe bereits einiges zur Auslieferung gelesen, aber noch kein Weg hat mich richtig überzeugt.

- Ich möchte auf kein externes Tool angewiesen sein!!!
- Tabellen, Indizes, Beziehungen etc. sollen erstellt, bearbeitet, gelöscht werden können
- Tabelleninhalte sollen teilweise auch mit eingeschlossen werden

Der Weg über Backup etc. fällt daher aus. (Auch wegen den Versionskonflikten)

Überlegung: Script erstellen lassen und unter C# ausführen:

Gibt es unter C# die Möglichkeit das gesamte Script oder mehrere Anweisungen automatisiert auszuführen oder muss ich das immer manuell machen. (Auf sqlmetal würde ich auch gerne verzichten, da ich dort z. B. keinen Fortschrittsbalken anzeigen lassen kann bzw. Abfragen bei Änderungen nicht so toll machbar sind.

Oder gibt es einen besseren Weg über das EntityFramework, der auch alle Anforderungen erfüllt? (Auf meinen Entwicklungsrechner gehe ich aber den entgegengesetzten Weg: Modell aus SQL-Datenbank erzeugen)

Würdet ihr den SQL-Benutzer für die SQL-Server-Anmeldung auch innerhalb dieses Scripts erzeugen?

Bekomme ich den "Fortschrittsbalken" nur manuell realisiert und wenn ich jede einzelnen Befehl ausführe?

nvarchar(max) gibt es noch nicht auf dem SQL-Server 2000. Würdet ihr für die Abwärtskompabilität stattdessen ntext nehmen oder dies auf gar keinen Fall mehr nutzen?

Vielen Dank!

Thema: [erledigt] Entity Framework: EntityObject in allgemeiner Methode ändern
Am im Forum: Datentechnologien

Hallo witte,

stimmt! Das ist auch noch ein Weg (den vielleicht auch Microsoft so denken würde) Dann wäre die Methode am jeweiligen Objekt dran.

Vielen Dank für Eure hilfreiche Tipps!

Grüße

Thema: [erledigt] Entity Framework: EntityObject in allgemeiner Methode ändern
Am im Forum: Datentechnologien

Hallo unconnected,

danke für den Tipp! Das klappt tatsächlich!

Ich hatte gedacht, dass es einen leichteren Weg dafür gibt, aber die Laufzeit ist mir für 1 Änderung nicht so wichtig.

Grüße!

Thema: [erledigt] Entity Framework: EntityObject in allgemeiner Methode ändern
Am im Forum: Datentechnologien

Hallo FZelle,

weil ich das gleiche Feld auch in vielen anderen "Tabellen" (Entitäten) habe.

Z. B. Könnte es ein "CreationDate" sein.

Wie kann ich dann ein Kundenobjekt, Artikelobjekt, etc. übergeben und das gleichnamige Feld (z. B. CreationDate) kann in allen Objekten geändert werden. Über die als Parameter übergebene Entität kann ich ja direkt darauf zugreifen.

Ich übergebe ja auch nur Objekte, die dieses Feld besitzen - nur .NET traut mir leider so viel Intelligenz nicht zu.

Gruß

Thema: WPF: Combobox Binding mit Leerzeichen unterdrücken
Am im Forum: GUI: WPF und XAML

Hallo Winsharp und Christian,

vielen Dank für beide Tipps, die ich beide nutzen werde! Das ItemTemplate werde ich mir noch genau ansehen. (Es wäre ja zu einfach gewesen, wenn das nicht wieder auf einen vollkommen anderen Weg gelöst werden muss und mit einem Converter nicht funktioniert.) Es ist für später in meinem Fall sicher sehr gut geeignet, ohne dass ich die Klasse anfassen muss.

Momentan baue ich es wie von Christian beschrieben aus Zeitgründen ersteinmal als Property ein. Jedoch gefällt mir dieser Weg nicht so gut, da sich die Klasse immer weiter aufbläht und ich diese Informationen nur an verschiedenen Punkten in meiner Software benötige. Ich schleppe so mehr Balast mit.

Grüße

Thema: [erledigt] Entity Framework: EntityObject in allgemeiner Methode ändern
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <SQL-Server 2000-2008 (Standard/Express)>

Hallo,

ich habe eine wirklich dumme Anfängerfrage X( - Bitte nicht schlagen!:

In mehreren unabhängigen Methoden möchte ich jeweils ein EntityObject als Parameter übergeben.

In den Methoden möchte ich die EntityObjects ändern und speichern.

Nur in der Methode kann ich nicht auf bestimmte Felder zugreifen. Wie kann ich .NET begreiflich machen, dass es diese Felder auch tatsächlich gibt? (Ich übergebe immer Entitäten, wobei diese Felder bei vielen, aber nicht allen Entitäten existieren können):

Bsp.:

Es existiert ein EntityObject "Kunde" mit einem Feld "Feld1" und weitere EntityObjecte (z.B. "Artikel", "Lieferanten" etc.) mit dem gleichen Feld "Feld1".

In der Methode soll immer "Feld1" geändert werden.


public static void AendereFeld(EntityObject o)
{
  o.Feld1 = "Test";  // Soll z. B. Kunde.Feld1 ändern
}

Leider kommt eine Fehlermeldung: EntityObject enthält keine Definition für "Feld1" und es konnte keine Erweiterungsmethode gefunden werden.

Wie umgeht man das?

Danke

Thema: Fehler bei EntityFramework: "Metadata information for the relationship ... could not be retrieved."
Am im Forum: Datentechnologien

Hallo Observer,

ich arbeite auch mit dem EF, bin aber noch ein Einsteiger.

Vielleicht wurden Beziehungen in der Datenbank geändert. Aktualisiere doch einfach einmal Dein Modell (edmx).

Grüße

Thema: WPF: Combobox Binding mit Leerzeichen unterdrücken
Am im Forum: GUI: WPF und XAML

Hallo,

mittels binding werden in einer Combobox Werte aus einer Liste angezeigt. In der Liste existiert ein Member "Name", der auch angezeigt wird.

<ComboBox 
 ItemsSource="{Binding}"
 DisplayMemberPath="Name"
 SelectedValuePath="ID" 
></ComboBox>

Ich will aber die Leerzeichen entfernen. ItemsStringFormat scheint das nicht zu können, weshalb ich einen Konverter bemühen möchte.

So geht das scheinbar nicht, weil DisplayMemberPath nur einen String erwartet:


DisplayMemberPath="{Binding Path=Name, Converter={StaticResource myConverter} ConverterParameter=myParameter}"

Ob Multibinding notwendig ist, weiß ich nicht. Aber es klappt auch nicht:

<ComboBox 
  ItemsSource="{Binding}"
  SelectedValuePath="ID" 
  <ComboBox.SelectedItem>
    <MultiBinding Converter="{StaticResource myConverter}" ConverterParameter="myParameter">
      <Binding Path="Name" Mode="OneWay"/>
    </MultiBinding>
  </ComboBox.SelectedItem>
 </ComboBox>

Was mache ich falsch?

Danke

Thema: [erledigt] Daten selektieren, Klasse ändern und ChangeObjectState
Am im Forum: Datentechnologien

Hallo FZelle,

Du hast Recht und ich habe es geändert! Ich wollte wirklich fast alles mit Binding machen. Ist aber an dieser Stelle sicher nicht so sinnvoll.

Zitat
Und jedes Recht kann nur an einen Benutzer vergeben werden?
Ungewöhnlich.

-> Nein, in der Rechteklasse gibt es ja viele Member.

IEditableObject ist sehr interessant, was dort machbar ist. Da ich es nun manuell zuweise, habe ich das Problem in diesem Fall nicht mehr. Kann ich aber sicher an einer anderen Stelle nutzen

Fazit: manchmal lieber etwas mehr Code schreiben und ggf. auf zu viel Binding verzichten, als zu pfuschen!

Danke nochmals für die wiederholte Hilfe!

Grüße

Thema: [erledigt] Daten selektieren, Klasse ändern und ChangeObjectState
Am im Forum: Datentechnologien

Hallo FZelle,

Danke für die Info! "suboptimal" kann tatsächlich möglich sein.

Einige Felder werden in diesem Objekt geändert (nur interne Sachen) heißt:

z.B. in Form ein Dropdown für Benutzer, daneben eine Tabelle mit den Rechten.

Das Benutzerdropdown ist an eine Liste aller Benutzer {binded}.
Die Rechtetabelle ist an eine Liste mit den Rechten {binded}.

In der Rechtetabelle gibt es 1 Feld mit der Benutzer-ID und das Benutzerdropdown ist mit dem Wert! (nicht der Liste) daran gebunden.

Wenn ich nun bei einem Benutzer keine Rechte finde, zeige ich erst einmal alle Standardrechte an. Da diese Standardrechte noch keinem Benutzer zugewiesen sind (Feld Benutzer-ID ist leer), schreibe ich direkt nach dem Laden die Benutzer-ID in das Feld und durch die Bindung an die Combobox wird in dieser bereits der richtige Benutzer angezeigt.

Wahrscheinlich schreibst Du mir jetzt, ich solle das Binding des Wertes der Combobox weglassen und beim Speichern den Wert der Combobox manuell in die Rechteliste schreiben?

Wenn das der bessere Weg ist, würde ich das auch tun. Nur wie komme ich beim Umschalten der Combobox auf einen anderen User an den alten Wert von vorher (der ja dann gespeichert werden soll)? Gibt es etwas wie e.OldValue oder muss ich mir den Vorgängerwert z. B. im GotFocus speichern? (Preview_SelectionChanged) gibt es ja nicht)

Und: Würdest Du grundsätzlich von solchen Manipulationen den EntityState zu ändern eher abraten?

Danke!

Thema: [erledigt] Daten selektieren, Klasse ändern und ChangeObjectState
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <SQL-Server 2000-2008>, Entity Framework

Hallo,

scheinbar arbeitet hier im Forum niemand mit ChangeObjectState, dazu habe ich nämlich nichts gefunden.

Wie macht ihr bei Euch aber folgendes:

Daten aus der Datenbank werden in ein Objekt selektiert > Einige Felder werden in diesem Objekt geändert (nur interne Sachen) > Das Objekt wird in der Form angezeigt. > Der User kann Daten ändern > Die Daten werden zur Datenbank zurückgeschrieben.

Problem dabei: Die internen Sachen sind Hintergrundinformationen, die den EntityState nicht auf "Modified" ändern sollen. Das sollen nur die Benutzereingaben bewerkstelligen. Wenn ich später aber sichere, sollen die Hintergrundinformationen auch in die DB zurückgeschrieben werden; wenn der User die Daten verwirft natürlich nicht.

Lösungsansätze wären

a) mit ChangeObjectState den EntityState auf "Unchanged" ändern, nachdem die internen Sachen geändert wurden

oder

b) Nachdem die internen Sachen geändert wurden das Objekt nochmals kopieren und mit dieser Kopie weiterarbeiten?

oder

c) diese "internen Sachen" in einem anderen Objekt speichern, weil eine nachfolgende Änderung des EntityStates auf "Unchanged" diese Änderungen beim späteren Speichern und zurückschreiben in die Datenbank nicht ändern würde, auch wenn der Benutzer noch später andere Felder geändert hat.

(Bei a) habe ich zudem beim Versuch den Status zu ändern mit:


.ChangeObjectState(_myClass, System.Data.EntityState.Unchanged)

eine Fehlermeldung:
Zitat
"Der ObjectStateManager enthält keinen ObjectStateEntry mit einem Verweis auf ein Objekt des Typs MyClass".

_myClass.EntityState kann aber problemlos abgefragt werden, wobei manchmal seltsamerweise auch der Status statt auf "Modified" auf "Detached" steht?

Was empfehlt ihr?

Vielen Dank!

Thema: Entity Framework, LINQ: Aktualisierung beim einlesen von neuen Werten (2x geändert)
Am im Forum: Datentechnologien

Hallo schaedld,

Danke für den Tipp! Ich hab´s versucht und implementiert. Jedoch nach wie vor das gleiche Problem.

Ich denke, dass es nicht geht, weil ich mir die Daten ja schon in ein neues Objekt selektiert habe (myClass):


myClass2=(from .. in dataEntities... where... select ...).FirstOrDefault();
// wenn ich dann sage:
myClass=myClass2.Clone()

...erstelle ich zwar einen 1:1 Clon, aber myClass ändert sich trotzdem. Daher ist etwas notwendig wie z.B. myClass=myClass2.DuplicateAllValues (was es ja nicht gibt) oder eine foreach-Funktion (die ja scheinbar nicht geht), die alle Werte aus myClass durchgeht und in myClass setzt.

Vieleicht gibt es noch ein paar Ideen?

Danke!

Thema: Entity Framework, LINQ: Aktualisierung beim einlesen von neuen Werten (2x geändert)
Am im Forum: Datentechnologien

Hallo TThrebank,

Danke für den Code. Dieser Code erstellt mir aber leider eine neue Klasse, was ich eigentlich vermeiden wollte. Dann könnte ich auch mit _myClass=_myClass2 die Werte direkt zuweisen.


MyClass _myClass;
MyClass _myClass2;
_myClass2=(from .. in dataEntities... where... select ...).FirstOrDefault(); 
_myClass=_myClass2

Ich möchte aber eine Art á la _myClass2.CopyTo(_myClass), der nur alle Werte aus _myClass2 nach _myClass kopiert ohne das das komplette _myClass neu zugewiesen wird.

Damit würde sich mein oben beschriebenes Problem beseitigen:
Zitat
Wenn ich hingegen die einzelnen Werte zuweise (z.B. _myClass.Feld1=_myClass.Feld1 und _myClass.Feld2=_myClass.Feld2 etc.) klappt es hingegen, das das gebundene Objekt richtig aktualisiert wird.

Zudem habe ich inzwischen ein weiteres Problem bemerkt: Sobald ich nicht nur die einzelnen Werte kopiere, sondern das komplette _myClass durch die Zuweisung "ersetzt" wird, verliert .NET auch meine mit += abonnierte Methode an _myClass.PropertyChanged.

Dies kann scheinbar nur mit einem solchen "Softcopy" behoben werden?

Vielen Dank

Grüße

Thema: Entity Framework, LINQ: Aktualisierung beim einlesen von neuen Werten (2x geändert)
Am im Forum: Datentechnologien

Hallo witte,

"später erneut aufrufe" heißt, ich lese Werte von einem anderen Datensatz ein und möchte, das die anderen Werte auch sofort in den Usercontrols dargestellt werden (in diesem Fall Checkboxen).

Grüße