verwendetes Datenbanksystem: MSSQL
Hallo zusammen,
meine Datenbank besteht aus drei Tabellen. Eine davon ist die Relationstabelle zwischen den beiden
anderen. Also,
tbl_A(id, name)
tbl_B(id, user)
tbl_AB(id, a_id, b_id, text)
So binde die Tabelle tbl_AB direkt ans Grid:
dataGridView1.DataSource = from rel in dc.GetTable<tbl_AB>() select rel;
Das Editieren im GridViw klappt auch wunderbar.
Nun möchte ich im Grid statt "a_id" und "b_id" aus der Tabelle A und B "name" und "user" ausgeben:
dataGridView1.DataSource = (from rel in dc.GetTable<tbl_AB>()
select new {rel.Id, rel.tbl_A.name, rel.tbl_B.user});
Es wird alles korrekt ausgegeben nur kann ich jetzt keine Änderungen mehr im Grid vornehmen.
Kann mir da jemand weiterhelfen?
Ich würde eine "Join"-Klasse erstellen.
public class JoinClass
{
private TabA a;
private TabB b;
public JoinClass(TabA a, TabB b)
{
this.a = a;
this.b = b;
}
public string Name
{
get
{
return a.Name;
}
set
{
a.Name = value;
}
}
public string User
{
get
{
return b.User;
}
set
{
b.User = value;
}
}
}
und dann in der Linq-Query die Objekte erstellen.
dataGridView1.DataSource = (from rel in dc.GetTable<tbl_AB>()
select new JoinClass(rel.tbl_A, rel.tbl_B)).ToList();
Ich verstehe dein Problem nicht:*da ist kein "Anonymous Type" *Update / Refresh etc. - gehört eher zu den Grundlagen der Verwendung von LinqToSQL und DataGridView.
Könntest du es ausführlicher beschreiben?!
dataGridView1.DataSource = (from rel in dc.GetTable<tbl_AB>()
select new JoinClass(rel.tbl_A, rel.tbl_B)).ToList();
oder
dataGridView1.DataSource = (from rel in dc.GetTable<tbl_AB>()
select new {rel.Id, rel.tbl_A.name, rel.tbl_B.user});
sobald hier "new" auftaucht wird ein neues "Anonymous types" Objekt erzeugt welches sich
nicht durch das Entity Framework automatisch updaten lässt...und genau hier liegt mein Problem.
Hast du meine Vorschlag ausprobiert?
Es handelt sich bei der JoinClass nicht um einen "Anonymous types" und durch die Implementierung über die Properties wird die Änderung an die Tabellen weitergegeben.
Edit: Weiterer Lösungsansatz
Datenbankabfrage über 2 Tabellen