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: [erledigt] Verweis im XAML-Code auf einen Converter
Am im Forum: GUI: WPF und XAML

Hallo,

im XAML-Code nutze ich einen Converter. Das ist etwas umständlich ;(:

- per xmlns: den Namespace verfügbar machen
- unter den Fenster-Ressourcen per Key ansprechbar machen
- Converter dann zuweisen

Das klappt zwar, aber geht das auch ohne diese 3 Schritte? Ich würde gerne direkt bei "Converter=..." auf den Converter im C# Code verweisen.

Vielen Dank!

Grüße

Thema: [erledigt] Combobox: nur die Auswahlbox soll mehrspaltig sein [==> SelectionBoxItemTemplate]
Am im Forum: GUI: WPF und XAML

Hallo Talla,

danke für den superschnellen Tipp! Das war das Stichwort! Bin gerade dabei, mich durch einige Ansätze zu arbeiten. Ist mal wieder nicht ganz so einfach wie gedacht.

Grüße

Thema: [erledigt] Combobox: nur die Auswahlbox soll mehrspaltig sein [==> SelectionBoxItemTemplate]
Am im Forum: GUI: WPF und XAML

Hallo,

bitte nicht gleich googeln lassen, habe wirklich nichts passendes gefunden!

Eine ComboBox soll beim Aufklappen 2 Spalten haben. Dies mache ich mit einem ItemTemplate, darin DataTemplate und darin dann ein StackPanel. Und das klappt einwandfrei. - Überall finde ich nur diese Lösung.

Leider werden die 2 Spalten auch angezeigt, wenn die ComboBox geschlossen ist. Wie zeige ich in diesem Zustand nur den Wert aus einer bestimmten Spalte an? DisplayMemberPath verträgt sich leider nicht mit dem Template.

Ein knapper Code, am besten rein in XAML wäre natürlich am besten.

Vielen Dank!

Thema: [erledigt] WPF Combobox: Ungebundene Combobox und SelectedValue
Am im Forum: GUI: WPF und XAML

Hallo Michael,

8o Wow! - dass ist ja wirklich heiß!

Vielen Dank nochmals! Gehe nun auch über die Collection! Ist wirklich viel besser.

Grüße

Thema: [erledigt] WPF Combobox: Ungebundene Combobox und SelectedValue
Am im Forum: GUI: WPF und XAML

Hallo Michael,

naja, die ObservableCollection mit den Einträgen bleibt ja dann die ganze Zeit zusätzlich im Speicher.

Die Schleife wäre bei mehreren Jahresangaben im Combo trotzdem notwendig um die Observable Collection zu füllen.

Aber im Prinzip hast Du schon recht. Und da ich ohnehin lieber nach einem gleichartigen Schema vorgehe, werde ich es wohl in das Binding an eine Liste ändern.

Vielen Dank nochmals!

Gruß

Thema: [erledigt] WPF Combobox: Ungebundene Combobox und SelectedValue
Am im Forum: GUI: WPF und XAML

Hallo Michael,

Danke! Ja, so mache ich es normalerweise auch. Manchmal - z. B. wenn im Combo einfach nur Jahreszahlen dargestellt werden, finde ich es aber als zu viel Overhead, noch eine Liste oder Observable Collection zu erstellen.

Ich dachte, es geht in diesem Fall sogar einfacher. Aber wenn Du mir schreibst, dass dies nicht so ist, hilft mir das auch weiter.

Ich dachte nur, dass evtl. ein XAML-Binding wie SelectedValuePath="{Binding ComboBox.Content}" oder so ähnlich geht.

Evtl. hat ja noch jemand eine einfache Idee?

Gruß

Thema: [erledigt] WPF Combobox: Ungebundene Combobox und SelectedValue
Am im Forum: GUI: WPF und XAML

Hallo,

normalerweise binde ich eine Combobox immer per Binding an eine Liste und das klappt auch. In einigen einfacheren Fällen möchte ich jedoch manuelle Werte mit Add hinzufügen. Wenn es sich nur um Werte (und nicht um ComboBoxItems) handelt, kann ich prima per SelectedValue= den Wert zuweisen.

Sobald ich Formatierung der Items benötige, muss ich ja z. B. ein ComboBoxItem hinzufügen. Hier habe ich aber das Problem, wenn ich das SelectedValue setzen will, klappt es nicht. (Es bleibt null und es ist nichts ausgewählt).


ComboBoxItem CItem = new ComboBoxItem();
CItem.Content="15";
CB.Items.Add(CItem);

Wie kann ich nun folgendes machen:


CB.SelectedValue="15";

Bitte nicht über SelectedIndex=0 o. ä. Ich möchte direkt den Wert setzen. Benötige ich dafür im XAML-Code noch ein SelectedValuePath="{Binding... oder ähnliches? X(

Vielen Dank!

Thema: [erledigt] Entity Framework: Kompletter Refresh nach Änderungen an der Datenbank
Am im Forum: Datentechnologien

Hallo Gü,

danke für die Information! Ich hatte noch immer etwas gesucht, was es ermöglicht. Leider findet man im Internet nur Sachen zum grafischen Model-Designer.

Aber für mich ist es sehr wichtig zu wissen, damit ich es umschiffen kann, statt weiter zu suchen.

Ja, der Neustart ist zwar nicht am elegantesten aber scheinbar wirklich die einzige Möglichkeit.

Vielleicht fügt Microsoft ja in der nächsten Version eine Refresh() - Möglichkeit hinzu. Das wäre prima!

Grüße nochmals!

Thema: [erledigt] Entity Framework: Kompletter Refresh nach Änderungen an der Datenbank
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <SQL-Server 2008>

Hallo,

mein Programm wird gestartet und läuft. Dann wird eine Änderung an der Tabellenstruktur gemacht (z.B. eine Tabelle 'Testtabelle' in der Datenbank angelegt)

(Diese Tabelle existiert bereits in der Model.edmx-Datei meines Programms)

Danach wird die Connection geschlossen und neu aufgebaut. Trotzdem meckert .NET anschließend, wenn man auf die neue Tabelle zugreifen möchte, obwohl die Tabelle da ist (sieht man auch im SQL-Server Management Studio):

Fehler
Ungültiger Objektname 'Testtabelle'.

Startet man vor dem Zugriff auf die neue Tabelle hingegen das Programm neu, tritt kein Fehler auf.

Ich suche daher einen Befehl, ähnlich wie "dataentity.RefreshAllObjects" um den Neustart des Programms zu vermeiden.

Kennt jemand das Phänomen?

Vielen Dank!

Gruß

Thema: BeginInvoke vs. Backgroundworker
Am im Forum: GUI: WPF und XAML

Hallo,

in einem WPF Programm funktioniert an einer Stelle ein Backgroundworker einwandfrei. Um den Programmcode zu verkürzen habe ich aus dem Backgroundworker einen BeginInvoke gemacht.

Beides läuft problemlos. Nur, wenn genau während des Hintergrundtasks ein Fenster verschoben wird, friert mir das komplette Windows(!) bei der BeginInvoke-Lösung ein. (Nur durch Start des Taskmanagers - ohne beenden - kann wieder korrekt weitergearbeitet werden) Setze ich in die nächste Zeile hinter BeginInvoke eine Messagebox, wird diese aber korrekt angezeigt und das Programm friert nicht mehr ein.

Wie kann ich dieses Verhalten bei BeginInvoke vermeiden?

Ich vermute, dass ich mehrmals App.Current.BeginInvoke() verwende und dadurch der Dispatcher bereits belegt ist. Leider besitzt aber der Dispatcher keinen Konstruktor, dass ich mir für jeden BeginInvoke eine neue Instanz erstelle.

Ist BeginInvoke nur z. B. für einen Aufruf aus einem WPF-Fenster oder WPF-Objekt heraus gedacht? ?(

Vielen Dank!

Grüße

Thema: [erledigt] Entity Framework SysDateTime() bei CreateQuery unter SQL-Server 2005 /08 nicht möglich
Am im Forum: Datentechnologien

Hallo Gü,

- Ohne Kommentar! Ja, ich habe mich wieder einmal so auf einen Weg versteift, dass ich die einfachste Lösung nicht gesehen habe!

Klappt natürlich problemlos!

Vielen Dank nochmals! =)

Thema: [erledigt] Entity Framework SysDateTime() bei CreateQuery unter SQL-Server 2005 /08 nicht möglich
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <SQLServer 2005, SQLServer2008 und R2>

Hallo,

per CreateQuery frage ich mit SysDateTime() das aktuelle Datum und Uhrzeit des SQL-Servers ab. Das funktioniert leider nur bei 2008R2 und nicht bei 2008 und 2005er SQL-Server.

Nachdem ich sehr viel probiert habe, fällt mir leider nicht ein, welche Funktion von CreateQuery mir das aktuelle Datum plus Uhrzeit zurückgibt und auch auf einem 2005er SQL-Server funktioniert.

P. S. Die gesuchte Methode sollte schon meine bestehende Verbindung des Entity Frameworks benutzen und auch funktionieren, wenn noch keine Datenbank existiert (also noch nichts gemappt ist). Daher mir bitte auch keine T-SQL-Anweisung mitteilen.

Im Netz habe ich folgenden Code gefunden:


return (DateTime)this.ExecuteMethodCall(this, mi, new object[] { }).ReturnValue;

Falls das der richtige Ansatz ist, habe ich aber das Problem, dass in dieser Zeile bei mir der Fehler auftritt:
Fehler
...enthält keine Definition für "ExecuteMethodCall
- muss ich dafür irgendwelche Verweise einfügen?

Habt Ihr eine Idee?

Vielen Dank!

Thema: Microsoft enthüllt neues Windows 8 User Interface
Am im Forum: Szenenews

Sehr interessante Gedanken!

auch wenn die Diskussion bereits länger zurückliegt, von mir auch ein paar Punkte (vielleicht liest ja Microsoft auch einmal mit):

Die >neue< "Windows 8" App-Oberfläche:
- 100% Kompabilität zu allen 32- und 64- bit Programmen ist zwingend erforderlich!
- unterstützt scheinbar keine mehreren Fenster, zwischen denen wie bisher gewechselt werden kann, die skaliert und sinnvoll angeordnet werden kann - Daher im Büro nicht nutzbar!
- Touchscreen ist im Büro unsinnig - oder wie schwer sind Eure Arme nach einem 8 Std. Tag?
- Keine schöne Integration zwischen >neuer< und konventioneller Oberfläche in Windows 8
- Microsoft setzt zukünftig scheinbar mehr auf Modetrends als auf Bedienbarkeit?
- >neue< Oberfläche auf für die zukünftigen Serverversionen? - Das wird lustig!

Office:
- Ribbons in den Office-Programmen nerven mich auch und sind nicht intuitiver
- Trotz weniger Funktionen im aktuellen Office ist die 2003er Version viel übersichtlicher
- Keine direkte Sync mit Outlook und dem WindowsPhone - das ist im Business-Bereich katastrophal!

.NET:
- Microsoft hat seit ca. 2000 .NET auf die Beine gestellt, was anfangs große Mängel aufwies und gegen das viele Entwickler geflucht haben. Viele Entwickler sind dadurch von Microsoft weggegangen.
- Sollte sich das Spiel wiederholen, wird es ernst für Microsoft.
- Microsoft sollte besser die Programminhalte verbessern, statt permanent neue Ideen zu beginnen und dann wieder zu verwerfen.
- Welche Technik dahintersteckt ist dem User doch egal. Warum macht Microsoft dann so etwas? - Ich vermute, dass ist nur ein Kommunikationsproblem.

Ich bin sicher, dass die >neue< Oberfläche nur auf Touchgeräten im Home-Betrieb genutzt wird. Business-Lösungen werden weiter wie bisher laufen und auch weiterhin mit dem .NET entwickelt werden.

Grüße

Thema: [erledigt] Entity Framework, WPF-Combobox und ConstraintException
Am im Forum: Datentechnologien

Hallo CSharperUser,

vielen Dank, das Du mir geholfen hast und gleich mehrere Lösungsansätze gegeben hast!

Ich habe seit gestern an anderen "Baustellen" gearbeitet, weil ich dabei nicht mehr weitergekommen bin.

Aus unerklärlichen Gründen tritt der Fehler nun derzeit nicht mehr auf. Scheinbar wurde dadurch die Initialisierungsdauer und Abfolge evtl. geändert. Das ist für mich natürlich auch keine perfekte Lösung, weil der Fehler dann schlimmstenfalls sporadisch beim Kunden auftreten könnte.

Zitat
Eventuell kannst du das Binding im Sinne der Wertänderung selbst definieren, d.h. du sagst dem Binding explizit, wann es sich aktualisieren soll.

--> Wenn dieses Problem nochmals auftritt, werde ich so vorgehen. Das ist in meinem Fall am einfachsten. Darauf bin ich gar nicht gekommen.

Vielen Dank nochmals!!!

Grüße

Thema: [erledigt] Eigenes gebundenes WPF Usercontrol - Wo Code ausführen?
Am im Forum: GUI: WPF und XAML

Hallo,

in einem eigenen Usercontrol, was aus mehreren Controls besteht und wo die DependencyProperty "Wert" per Databinding gebunden wird, möchte ich, dass beim Zuweisen des Datacontexts später eine bestimmter Code "Zeigeetwas()" ausgeführt wird.

-> weise nun den Datacontext nochmals explizit zu und es klappt jetzt. Bei Textboxen o.ä. ist das Vorgehen bei mir allerdings nicht notwendig.

Thema: [erledigt] Entity Framework, WPF-Combobox und ConstraintException
Am im Forum: Datentechnologien

Hallo Profis,

hat denn wirklich niemand eine Idee dazu? X(

Grüße

Thema: [erledigt] Entity Framework, WPF-Combobox und ConstraintException
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <SQL-Server 2005, 2008>

Hallo,

beiße mich gerade an einem Problem aus, welches bereits tausendmal auch hier im Forum angesprochen wurde, scheinbar auch gelöst wurde, aber niemals gepostet wurde:

Immer wieder Databinding und Relations
ConstraintException
XML in Datenbank
Seltsames verhalten

Eine WPF-Combobox ist gebunden. Der Inhalt (ObservableCollection, die die Auswahldaten enthält) wird geändert beim Laden und teilweise auch wenn im Fenster bestimmte Aktionen gemacht wird.

Im Hintergrund wird mit dem Entity Framework gearbeitet.

In der Datenbank ist das zugehörige Feld vom Typ "not null".

Da während des Ladens anfänglich teilweise noch keine Daten geladen wurden, ist das Combo scheinbar kurzfristig null und will dies scheinbar störrisch in das gebundene Feld schreiben. Da dieses null durch die Regeln nicht in die Entität geschrieben werden können, erscheint beim Start immer folgender Fehler:

Fehler
System.Data.ConstraintException: Diese Eigenschaft kann nicht auf einen NULL-Wert festgelegt werden.
InnerException=null
Source System.Data.Entity
StackTrace:bei System.Data.Objects.DataClasses.StructuralObject.SetValidValue(String value, Boolean isNullable)
bei MyProgram.MyClass.set_MyText(String value)

Problem ist, dass dieser Fehler hier auftritt:


[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String MyText

...
	_MyText = StructuralObject.SetValidValue(value, false);
...

Da dieser Code vom Entity Framework automatisch erzeugt wurde (und das Datenbankmodell von Zeit zu Zeit immer wieder einmal neu generiert wird) kann ich diesen Code ja nicht einfach ändern.

Vorgabe ist aber, dass in der Datenbank das Feld "not null" sein muss.

Wie kann ich die Fehlermeldung verhindern? Sie tritt nicht an einer bestimmten Stelle in meinem C# Code auf, sondern scheinbar im WPF-Form zu teils unterschiedlichen Zeiten. Ich kann den Fehler daher nicht abfangen.

this.dataSet1.EnforceConstraints = false; kann ich nicht verwenden, da ich nicht wüsste, wie dies beim Entity Framework funktionieren sollte.

Nun bin ich wirklich ratlos.

Kann mir da wirklich niemand helfen? X(

Grüße

Thema: [erledigt] SQL-Server: SQL-Select mit Werten, die nicht in einer anderen Tabelle vorkommen
Am im Forum: Datentechnologien

Hallo Florian,

nein, bestimmt ist das nicht stümperhaft, da es exakt das war, wonach ich ja gefragt hatte - direkt im Join.

Aber der EXISTS ist einfach für mich doch auch passender.

Grüße

Thema: [erledigt] SQL-Server: SQL-Select mit Werten, die nicht in einer anderen Tabelle vorkommen
Am im Forum: Datentechnologien

Hallo Florian,

super, vielen Dank! Ich hatte mich zwar zuerst gegen einen ...IN-Select gesträubt, da ich dazu je nach Abfrage einen vorhandenen Sql-Select anders abfragen müsste (über case und dann zwei unterschiedliche Selects), jedoch überzeugte mich Dein WHERE NOT EXISTS (einerseits aus Performancegründen, andererseits, da ich darin auch meine andere Abfrage leicht anpassen könnte) doch so stark, dass ich dies nutzen werde!

Nochmals herzlichen Dank für die wirklich schnelle und Top-Hilfe!

Grüße

Thema: [erledigt] SQL-Server: SQL-Select mit Werten, die nicht in einer anderen Tabelle vorkommen
Am im Forum: Datentechnologien

Hallo Florian,

Danke für Deine Antwort. Nein, es soll kein Produkte.Produkt zurückgeliefert werden. Ich habe diese Spalte am Anfang nur drinnen, um mir beim manipulieren am Select null-Werte o. a. anzuzeigen.

Es sollen wie gesagt nur die Kunden zurückgegeben werden, für die in der Produkt-Tabelle keine Sparte mit =10 hinterlegt ist.

Das man eine Liste erhält für die Kunden, bei denen man die Sparte=10 noch hinterlegen muss.

Nur wie?

Es sollte aber in einer einzigen SQL-Bedingung abfragbar sein und am besten komplett in der JOIN-Bedingung stehen können (und möglichst ohne SELECT IN).

Grüße

Thema: [erledigt] SQL-Server: SQL-Select mit Werten, die nicht in einer anderen Tabelle vorkommen
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <SQL-Server 2005, 2008>

Hallo,

es sollen die Kunden ermittelt werden, zu denen nicht in einer Untertabelle Produkte einer bestimmten Sparte mit SparteId=10 zugeordnet wurden:

SELECT Produkte.Produkt, Kunden.Name
FROM Kunden
RIGHT OUTER JOIN (Produkte ON Kunden.Id = Produkte.KundenId AND
                      Produkte.SparteId = 10) [I]AND Produkte.Id=NULL[/I]
WHERE (...)

Bsp.
Kunde "Mustermann", id=1
Kunde "Meier", id=2

Produkt "Nudeln", id=99, KundenId=1, SparteId=8
Produkt "Erbsen", id=100, KundenId=1, SparteId=10
Produkt "Linsen", id=101, KundenId=2, SparteId=15

Soll nur 1x"Meier" zurückliefern, da für Meier in der Produkt-Tabelle für die Sparte=10 kein Eintrag existiert.

Die obere Bedingung klappt natürlich nicht. Es sollte aber in einer einzigen SQL-Bedingung abfragbar sein und am besten komplett in der JOIN-Bedingung stehen können (und möglichst ohne SELECT IN).

Wie ist das möglich? Ich stehe da momentan leider auf dem Schlauch, obwohl das ja gar nicht kompliziert ist.

Danke!

Thema: [erledigt] Entity Framework Klasse: 2 Objekte vergleichen und NUR Änderungen übernehmen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Gü,

ich war im Kurzurlaub und kann mich erst jetzt melden.

Vielen Dank für den Code gleich als IEnumerable und ExtensionMethod! Wer diesen Code nutzt, muss allerdings berücksichtigen, dass z. B. folgende Verweise auf andere Tabellen und Referenzen hier noch mit enthalten sind, da diese ja auch im ObjectContext vorkommen:

- MyProject.Tabelle1 Tabelle1
- System.Data.Objects.DataClasses.EntityReference`1[MyProject.Tabelle2] Tabelle2Reference

Ich frage nun die Felder daher zusätzlich nochmals einzeln ab und das funktioniert auch.

Vielen Dank!

Grüße

Thema: [erledigt] Entity Framework Klasse: 2 Objekte vergleichen und NUR Änderungen übernehmen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

also ich habe nun ziemlich viel versucht. GetMembers(), GetProperties() und auch per PropertyDescriptor. Ich finde keinen Unterschied, an dem ich erkennen kann, ob es sich um ein Datenbanksfeld handelt. Alle Member sind auch vom Typ MethodInfo.

Vielleicht weiß noch jemand einen Rat.

Ansonsten funktioniert diese Methode wirklich ausgezeichnet! Vielen Dank!

Grüße

Thema: [erledigt] Entity Framework Klasse: 2 Objekte vergleichen und NUR Änderungen übernehmen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Gü,

Super!!! PropertyInfo war das Stichwort. Einziges Problem noch, wie kann ich nur meine wirklichen Felder (z. B. "Name", "Vorname", "ID" etc. herausfiltern?

Ich bekomme noch ziemlich viele andere Properties z. B. KundeProperty, EntityState etc...

Derzeit suche ich unter property.GetType(), habe aber noch nichts passendes gefunden.

propery.MemberType ist immer "Property" und kann nicht zur Unterscheidung herangezogen werden.

Grüße

Thema: [erledigt] Entity Framework Klasse: 2 Objekte vergleichen und NUR Änderungen übernehmen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Gü,

ja, nur SaveChanges schreibt die Änderung bereits in die Datenbank. Ich möchte aber an dieser Stelle noch nicht so weit gehen und die Daten nur in meiner ObservableCollection lokal auf dem Rechner "speichern".

Ich würde also nach meinem Clone() nur eine allgemeine Änderungsübernahme-Methode zurück zum Ursprung der Clone-Quelle benötigen.


...
Kunde tempkunde=(Kunde)kunde.Clone();
...
if (ok)
{
  UpdateObject(tempkunde, kunde);
}

Thema: [erledigt] Entity Framework Klasse: 2 Objekte vergleichen und NUR Änderungen übernehmen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo FZelle,

danke für die schnelle Antwort!

So viel wie ich dazu gelesen habe, kann IEditableObject per CancelEdit Änderungen rückgängig machen. (D. h. es arbeitet wie ein Rollback, was ich eigentlich aus folgenden Gründen vermeiden wollte:)

Mein Objekt befindet sich aber leider in einer oder mehreren ObservableCollections, die zu einem Zeitpunkt im Programmablauf existieren. Um nicht die Änderungen des Objekts in diesen ObservableCollections während meiner Bearbeitung durchzuführen, arbeite ich mit einem Klon.

IEditableObject (BeginEdit) würde in meinem Fall auch dieses Objekt in allen ObservableCollections beeinflussen. Das soll aber definitiv noch nicht passieren.

Ich benötige doch eher eine Methode mit folgenden Parametern:

public void UpdateObject(object Quellobjekt, object Zielobjekt)

Im Quellobjekt sollten dann alle in der DB vorhandenen Felder z. B. per foreach durchgegangen werden und wenn sich diese geändert haben, im Zielobjekt geändert werden. Dabei soll im Zielobjekt PropertyChanged ausgelöst werden.

Nur wie kann man das realisieren?

Danke

Thema: [erledigt] Entity Framework Klasse: 2 Objekte vergleichen und NUR Änderungen übernehmen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

ich kopiere flach eine Entity Klasse mit Klasse.Clone(), damit der Benutzer in Ruhe an der Klasse arbeiten kann, ohne dass sich die Original-Klasse ändert und die Änderungen auf Wunsch nicht übernommen werden müssen.

Die Übernahme habe ich mir so vorgestellt:
Ich möchte eine Klasse erstellen, die NUR alle Änderungen der geclonten Klasse auf die Originalklasse überträgt. Dazu müsste diese Methode nur meine Felder (die auch in der Datenbank vorhanden sind) prüfen und ggf. updaten, nicht aber die komplette Klasse kopieren (wie die meisten DeepCopy-Methoden). Nur wenn sich etwas geändert hat, sollte PropertyChanged ausgelöst werden.

Nun bin ich über viele DeepClone Möglichkeiten gestolpert, (teils auch über einen Constructor etc.). Ich benötige aber keine tiefe Kopie der kompeltten Klasse, sondern nur einzelner Felder bei Änderungen.

Auch hier gibt es bereits einige Interessante informationen, leider aber in eine andere Richtung: Kopie ohne ICloneable [oder warum man Objekte nicht kopieren sollte; Transaktionen auf Objekten].

Muss ich dies mit einer foreach-Schleife realisieren, oder gibt es da einen einfacheren Ansatz. Bei foreach habe ich die Schwierigkeit, dass es auf alle Klassen angewendet werden sollte. Wonach muss ich im Netz suchen?

P.S. Rollback o.ä. sind für mich nicht sinnvoll.

Danke!

Thema: EntityFramework: ObservableCollection einer Klasse
Am im Forum: Datentechnologien

Hallo unconnected,

vielen Dank für diesen Tipp!


ObservableCollection<Kunden> Col1 = new ObservableCollection<Kunden>(){k1}; 

Das funktioniert bei mir aber nur, wenn k1 "static" ist.

Nun kann ich daher PropertyChanged von k1 abonnieren. Leider feuert es aber nicht (trotz INotifyPropertyChanged + PropertyChangedEventHandler + InvokePropertyChanged in der Entitätsklasse "Kunden"). (Liegt dies am static?)

Vielen Dank!


Hallo Gü,

die lokale Klasse k1 habe ich aus der Entität erstellt:


public static Kunden k1 = new Kunden();

daher sollte sie auch das in Kunden implementierte INotifyPropertyChanged ebenfalls implementieren.?. Zumindest kann ich es ja an dieser Stelle nicht nochmals zusätzlich angeben.

Die Entität Kunden ist mein "direkter Link" in die Datenbank.

Die lokale Klasse k1 muss ich nur erstellen, damit ich k1.PropertyChange abonnieren kann. Beim Ändern z. B. des Kundennamens soll dieses gefeuert werden.

Thema: EntityFramework: ObservableCollection einer Klasse
Am im Forum: Datentechnologien

Hallo Gü,

INotifyPropertyChanged ist bereits bei der Entität implementiert. Jedoch will ich nicht das direkte PropertyChanged der Entität ("Kunden"), sondern das PropertyChanged meiner lokalen Klasse ("k1") abonnieren.

Daher versuchte ich


public Kunden k1 = new Kunden(); 

was ja zwar geht, von dem ich dann aber leider scheinbar keine ObservableCollection erzeugen kann.

Wenn ich eine ObservableCollection direkt von der Entität erstelle, kann ich andererseits aber wieder nicht das PropertyChanged abonnieren. X(

Seltsamerweise hat der Tip von unconnected wirklich funktioniert; leider kann dort zwar das PropertyChanged nun korrekt abonniert werden, löst aber trotzdem nicht aus? X(

Grüße

Thema: EntityFramework: ObservableCollection einer Klasse
Am im Forum: Datentechnologien

Hallo Gü,

danke für die schnelle Antwort!

Zu Punkt 5: ich konnte keine Fehlermeldung schreiben, da Intellisense sich schon weigerte, die Klasse in die ObservableCollection zu schreiben. Deshalb habe ich keine angegeben und den Code wie gedacht direkt im Browser eingetippt. Zukünftig achte ich bei Fehlern besonders darauf.

Habe leider noch nicht das neuste EF (u. a. wegen vorhandener Installationen und weil ich mit der dt. Version vom VS arbeite. Das Languagepack ist noch nicht fertig)

Über die Neuerungen komme ich aber leider trotzdem nicht zum Ergebnis. X(

Wie kann ich es trotzdem anders schaffen? Dann arbeite ich eben mit einer ObservableCollection direkt von der Entität. CollectionChanged kann ich abonnieren, es feuert aber leider nicht direkt beim Ändern eines Feldes (z. B. tippen), sondern leider nur beim Hinzufügen von neuen Items.


Wie kann ich trotzdem das PropertyChanged der Entität in der ObservableCollection abonnieren? (Nicht das PropertyChanged der Original-Entität)


Oder kann ich notfalls irgendwie direkt etwas am Binding abfangen? Dort steht im Datagrid (Kundenname ist das Feld mit dem Kundennamen, das bei einer Änderung über PropertyChanged meinen eigenen Code auslösen soll):


... Binding="{Binding Path=Kundenname, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"

Vielen Dank!