Hallo zusammen,
habe über EF 4.0 ein EDM erstellt, Stored Porocedures für Insert, Update und Delete entsprechend eingebunden. Solange ich für ein Grid eine Entität als ganzes als Datasource benutze, funktioniert das ales recht gut.
1.) Da in der gefüllten Entität, Datensätze vorhanden sind die nicht angezeigt werden sollen filtere ich über eine LINQ query nur die die benötigten DataRows aus und binde das Grid direkt an die Abfrage==> s. Code
private void frmAnredenShow_Load(object sender, EventArgs e)
{
//context wird weiter oben im Code initialisiert und ist im gesamten Modul "sichtbar"
var anr = from anreden in context.Anreden
where anreden.IsVisible == 1
select anreden;
anredeBindingSource.DataSource = anr;
}
Die Daten werden korrekt angezeigt. Die Daten im Grid können editiert und neue Datensätze eingefügt werden.
Mein Verständis ist, dass die Entität beim Load-Event gefüllt wird und die im Datagrid vorgenommenen Änderungen in der Entität ebenfalls vorgenommen werden.
D.h. der "context" auch geändert worden ist.
Im Close-Event des Formulars rufe ich conext.SaveChanges() auf. Danach this.Dispose(). Und siehe da, die Änderungen werden nicht in die Datenbank geschrieben.
Ich möchte gerne die Funktionalität des EF nutzen, da ich die "automatische" Benutzung der Stored Procedures recht gut finde.
Kann mir jemand aufzeigen, wie ich auf den geänderten Context im Close-Ereignis zugreifen, und die vorgenommenen Änderungen in die Daatenbank schreiben kann?
2.) In der oben angesprochenen Tabelle sind Spalten, wie ChangeUser, ChangeDate etc. Diese Spalten befinden sich in allen Tabellen der Daatenbank, und damit auch im EDM. Z.Zt lasse ich die für die Form nicht notwendigen Spalten nicht anzeigen.
Nehme ich als Datasource für ein Grid wieder eine LINQ-Query laufe ich in das gleiche Problem wie oben unter 1.) beschrieben.
Mein Ziel ist es, über eine Linq-query nur bestimmte Spalten aus Entitäten auslesen, in einem Grid anzeigen und bearbeiten lasse, und dann in einem Rutsch die vorgenommenen Änderungen, unter Nutzung des EF in die Datenbank wegzu schreiben.
Danke im Voraus.
A_SqlDeveloper