2016-03-18 15 views
1

Ich bin auf einer Sackgasse laufen versucht, um bearbeitete Daten in einer Datagridview mit EF6 und verschachtelte untergeordnete Objekte zu speichern. Hoffnung, jemand kann mir in die richtige Richtung zeigen ..Entity Framework 6 Datagridview verschachtelte Kind Databind

Ich habe 2 Einheiten:

public class Customer 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Function { get; set; } 
} 

public class Function 
{ 
    public int Id { get; set; } 
    public int Property { get; set} 
} 

Next Ich möchte Kunden zeigen, und das untergeordnete Objekt von Funktion in einem Datagridview wie so: Id .. Namens .. Function.Property

Datagridview wird durch das deaktivieren Autogeneratecolumns angepasst. DataPropertyName wird im Folgenden anhand der Objekte festgelegt:

Ich habe eine Modelview:

public class CustomerModelViewObject 
{ 
    public int Id { get; set; } 
    public string Name{ get; set; }    
    public int f_prop { get; set; } /* Function.Property */ 
} 

So weit, so gut. Ich kann die Gegenstände sehen und ich kann sie bearbeiten. Wenn ich auf den "Speichern" -Button klicke, müssen die Änderungen in der Datenbank widergespiegelt werden, aber ich kann es nicht zum Laufen bringen. Ich habe jetzt zwei Tage gesucht und gesucht, aber ohne Erfolg.

Abfrage- und Datenquelle:

var q = from it in _context.KlantenConfigs 
select new CustomerModelViewObject 
{ 
    Id = it.Id,       
    Name= it.Name, 
    f_prop= it.Function.Property      
}; 

klantenConfigDataView.DataSource = q.ToList(); 

Ich hoffe wirklich, dass jemand mir dabei helfen kann. Ich werde für immer dankbar sein! :-)

Antwort

0

zu speichern, müssen Sie (Ihre nach Ereignis speichern) die aktualisierten Werte aus der Datagridview erhalten, die verbundenen Unternehmen in _context.KlantenConfigs zu aktualisieren und dann _context.SaveChanges()

Für eine einfache Möglichkeit, dies zu tun, rufen Sie so sehen Antwort: https://stackoverflow.com/a/21284808/3997704

+0

Hallo, danke für deine Antwort. Was meinst du mit "nach deinem sicheren Event"? Meinst du, dass ich jede Zeile und Eigenschaft prüfen muss, um zu sehen, ob sie geändert wird, und dann mit der zugehörigen Entität zu verknüpfen? Ich bin mir nicht sicher, wie ich das erreichen soll. Wie würden Sie die aktualisierten Werte erhalten? –

+0

fand ich eine Antwort auf SO, das Ihnen hilft: http://stackoverflow.com/a/21284808/3997704 – mnwsmit

+0

Ok, also habe ich versucht, eine Binding dazwischen hinzuzufügen: Binding src = new Binding(); meine Abfrage q src.DataSource = q.ToList(); klantenConfigDataView.DataSource = src; Es zeigt jetzt eine zusätzliche leere Zeile auf meinem Datagridview, was gut ist. Ich hatte es vorher nicht gehabt. Aber beim Aufruf von _context.savechanges(); nichts passiert. In SQL Profiler sehe ich nichts bewegen. Der Kontext sieht nichts geändert .. Ich muss etwas verpassen. –

Verwandte Themen