EntityFramework Core und WPF-Anwendung, speichert nicht
Hallo Miteinander
Irgendwie steh ich auf dem Schlauch.
Deshalb habe ich hier schematisch meine Programmaufbau für eine WPF-Anwendung mit Datenbankanbindung aufgezeigt.
C#, .Net 7.0
EntityFrameWork 7.11
WPF-Anwendung.
In einer externen Klasse rufe ich Daten ab einem SQL-Server ab und zeige den Datensatz in einem Formulare mit Hilfe von einzelnen Textboxen an. Seit kurzem werden mir die Änderungen im Formular nicht mehr zurück in die Datenbank geschrieben. Ich löse die die SaveChanges() Funktion aus verschiedenen Umständen auf.
Meine externe Klasse:
Mein XAML-Code mit den Steuerelementen
Code Behind:
Instanz bleibt bestehen.
Die Beispiele, welche ich finde, werden die einzelnen Variablen in einer Klasse abgebildet und anschliessend über die OnPropertyChanged(Nameof(nn)); überwacht.
Gibt es da eine Möglichkeit, den gesamten Datensatz zu überwachen? Also die Struktur TblBoard?
Gruss und Dank....
Roland
Irgendwie steh ich auf dem Schlauch.
Deshalb habe ich hier schematisch meine Programmaufbau für eine WPF-Anwendung mit Datenbankanbindung aufgezeigt.
C#, .Net 7.0
EntityFrameWork 7.11
WPF-Anwendung.
In einer externen Klasse rufe ich Daten ab einem SQL-Server ab und zeige den Datensatz in einem Formulare mit Hilfe von einzelnen Textboxen an. Seit kurzem werden mir die Änderungen im Formular nicht mehr zurück in die Datenbank geschrieben. Ich löse die die SaveChanges() Funktion aus verschiedenen Umständen auf.
Meine externe Klasse:
namespace MyNameSpace
{
public class ClsBoards : INotifyPropertyChanged
{
public event PropertyChangedEventHandler? PropertyChanged;
private void OnPropertyChanged([CallerMemberName] String caller = null)
{
var handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(caller));
}
}
// Datenbankkontext setzen
MyContext db = new MyContext();
// Einen einzelnenDatensatz auslesen aus der Datenbank
public TblBoard getBoard(int idx)
{
return db.TblBoard.Where(j => j.Idx == idx).FirstOrDefault();
}
// Sichern der Daten
public int SaveMyChanges()
{
return db.SaveChanges();
}
}
Mein XAML-Code mit den Steuerelementen
// Zuweisen der Spaltennamen an die Formularfelder:
<Grid x:Name="MyGrid">
<Textbox Text={Binding Path=Name, Mode=TwoWay} />
<Textbox Text={Binding Path=Material, Mode=TwoWay} />
</Grid>
Code Behind:
Instanz bleibt bestehen.
public ClsBoards clsBoards = new ClsBoards();
// Die Daten aus der Datenbank abrufen und an den DataContext des Formulars übergeben.
private void GetData()
{
TblBoard rec = clsBoards.getBoard(25);
MyGrid.DataContext=null;
MyGrid.DataContext=rec;
}
// Wird von einem Button aufgerufen
private void Save()
{
int Anz=clsBoards.SaveMyChanges();
Debug.WriteLine(Anz.ToString() + " gespeichert....");
}
Die Beispiele, welche ich finde, werden die einzelnen Variablen in einer Klasse abgebildet und anschliessend über die OnPropertyChanged(Nameof(nn)); überwacht.
private string name;
public string Name
{
get { return name; }
set
{
if (name != value)
{
name = value;
OnPropertyChanged(nameof(Name));
}
}
}
Gibt es da eine Möglichkeit, den gesamten Datensatz zu überwachen? Also die Struktur TblBoard?
Gruss und Dank....
Roland
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 13906127915
Url: https://administrator.de/contentid/13906127915
Ausgedruckt am: 22.11.2024 um 18:11 Uhr
4 Kommentare
Neuester Kommentar
Moin,
nur mal ein Schuss ins dunkle. Wie authentifiziert sich denn dein Programm bei der Datenbank? Solang nichts am an den Write Methoden zur Datenbank geändert wurde, sollte es ja keinen Grund geben nicht zurück schreiben zu können außer das Problem ist die Datenbank selber, eventuell stimmen die write Berechtigungen nicht ( nichtmehr).
Grüße
Florian
nur mal ein Schuss ins dunkle. Wie authentifiziert sich denn dein Programm bei der Datenbank? Solang nichts am an den Write Methoden zur Datenbank geändert wurde, sollte es ja keinen Grund geben nicht zurück schreiben zu können außer das Problem ist die Datenbank selber, eventuell stimmen die write Berechtigungen nicht ( nichtmehr).
Grüße
Florian