c# winforms entity-framework datagridview nullreferenceexception

c# - NullReferenceException al establecer AutoSizeMode en AllCells en DataGridView



winforms entity-framework (3)

AutoSize todas las celdas significa que la vista de cuadrícula de datos necesita evaluar el resultado para cada columna. El EF necesita suministrar el resultado para cada fila. Parece que probablemente esté vinculando a una columna de clave externa. Si el valor en la fila no coincide con una fila en la tabla foránea, entonces la vista de tabla de datos producirá este error. El EF tiene un problema donde el valor en la tabla DEBE coincidir con el valor en la tabla extranjera sensible a mayúsculas y minúsculas ... independientemente de si SQL distingue entre mayúsculas y minúsculas. El EF está utilizando el CLR para realizar la coincidencia de entidades ... que distingue entre mayúsculas y minúsculas

Estoy vinculando manualmente una primera tabla de código de entidad a una vista de tabla de datos. Cuando configuro AutoSizeMode en AllCells y agrego una instancia a la tabla, obtengo una NullReferenceException durante Add.

El código funciona así:

dbContext.Persons.Load(); myDataGridView.DataSource = dbContext.Persons.Local.ToBindingList(); myDataGridView.Columns[ "Description" ].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; Person p = new Person(); p.Name = "Tester Alfred"; p.Description = "Description"; //no more properties, only those two (Id Property is annotated as [Key] dbContext.Persons.Add( p ); // this throws a NullReferenceException

Aquí está la parte relevante del rastro de la pila:

System.Data.Entity.Core.Objects.ObjectContext.AddSingleObject(EntitySet entitySet, IEntityWrapper wrappedEntity, String argumentName) bei System.Data.Entity.Core.Objects.ObjectContext.AddObject(String entitySetName, Object entity) bei System.Data.Entity.Internal.Linq.InternalSet`1.<>c__DisplayClassd.<Add>b__c() bei System.Data.Entity.Internal.Linq.InternalSet`1.ActOnSet(Action action, EntityState newState, Object entity, String methodName) bei System.Data.Entity.Internal.Linq.InternalSet`1.Add(Object entity) bei System.Data.Entity.DbSet`1.Add(TEntity entity)

La tabla Personas está vacía. Cuando elimino el AutoSize - Instrucción, todo está bien.

Plattform: WInForms en .Net 4.5.1 utilizando Studio 2013; Ejecutando Win8 Pro, EF 6.1.3

Editar: se eliminó el error que introdujo una segunda vista de cuadrícula


Intente agregar los datos primero y luego úselos

myDataGridView .Columns[ "Description" ] .AutoSizeMode = DataGridViewAutoSizeColumnMode .AllCells ;


Puedes probar esto también

DataGridViewColumn column = dataGridView.Columns[Index]; column.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;