Sto imparando Entity Framework (5.0 e VSExpress 2012) e sto riscontrando problemi nel collegare la mia query a un oggetto DataGridView in WinForms. Ho il codice seguente e visualizza la mia richiesta ok quando avvio l'applicazione ma non so cosa devo fare per aggiornare il DataGridView dopo aver cambiato i dati nel database sottostante. Qual è il modo migliore per farlo? Cosa sto facendo di sbagliato qui?Data binding query linq a datagridView in Entity Framework 5.0
private void Form1_Load(object sender, EventArgs e)
{
using(var ctx = new TimeKeepEntities())
{
var qLoggedIn = from r in ctx.tblTimeRecords
where (r.tblEmployee.Active && !r.ClockOut.HasValue) || System.Data.Objects.EntityFunctions.DiffDays(r.ClockOut, DateTime.Now)<30
select new { Name = r.tblEmployee.Last + ", " + r.tblEmployee.First, r.tblProject.ProjName, r.ClockIn, r.ClockOut };
dataGridView1.DataSource = qLoggedIn.ToList();
}
}
Ho fatto questo. L'associazione era corretta e sono stato in grado di modificare i dati dal datagridview quando si utilizza un pulsante di salvataggio con: context.SaveChanges(). Il problema è quando devo aggiungere una nuova riga di dati o eliminarla. Questo tipo di modifiche non si riflettono nel database quando SaveChanges. Forse sto dimenticando alcuni set di proprietà ...? ¿ –
Sto avendo lo stesso problema @ AlejandrodelRío. Ora vado a spider tutte le tue domande e risposte per vedere se l'hai risolto. Augurami buona fortuna! – Robino
@Robino Non ho questa risposta, ma questo approccio non ti aiuterà ad aggiungere o eliminare oggetti direttamente dal datagridview. Invece devi creare un BindingList, dove ObjectToShowInDatagrid è un oggetto con gli attributi che vuoi mostrare e ha un'istanza dell'entità del database. Devi anche aggiungere il metodo notifyPropertyCHanged a tutto il "set". In questo modo le modifiche si rifletteranno sull'oggetto e sul database. Lo spiegherò ulteriormente in una risposta. –