Estoy aprendiendo Entity Framework (5.0 y VSExpress 2012) y tengo problemas reales para enlazar mi consulta a un dataGridView en WinForms. Tengo el siguiente código y muestra mi consulta bien cuando inicio la aplicación, pero no sé qué hacer para actualizar DataGridView después de cambiar los datos en la base de datos subyacente. ¿Cuál es la mejor manera de hacer esto? ¿Qué estoy haciendo mal aquí?Consulta de vinculación de datos linq a datagridView en 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();
}
}
Lo hice. La vinculación fue correcta y pude editar los datos de la vista de cuadrícula de datos al usar un botón de guardar con: context.SaveChanges(). El problema es cuando tengo que agregar una nueva fila de datos o eliminarla. Ese tipo de cambios no se reflejan en la base de datos cuando SaveChanges. Tal vez estoy perdiendo un conjunto de propiedades ...? ¿ –
Tengo el mismo problema @ AlejandrodelRío. Ahora voy a spider todas sus preguntas y respuestas para ver si lo resolvió. ¡Deséame suerte! – Robino
@Robino No tengo esta respuesta, pero este enfoque no te ayudará a agregar o eliminar objetos directamente desde la vista de cuadrícula de datos. En su lugar, debe crear una BindingList, donde ObjectToShowInDatagrid es un objeto con los atributos que desea mostrar y tiene una instancia de la entidad de base de datos. También debe agregar el método notifyPropertyCHanged a todo el "conjunto". De esta forma, los cambios se reflejarán en el objeto y la base de datos. Explicaré esto más en una respuesta. –