我手动将实体框架代码第一个表绑定到datagridview。当我将AutoSizeMode设置为AllCells并向表中添加实例时,我在Add期间得到NullReferenceException。
代码运行如下:
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
以下是堆栈跟踪的相关部分:
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)
表人员否则为空。当我删除AutoSize - 指令时,一切都很好。
Plattform:使用Studio 2013的.Net 4.5.1中的WInForms;运行Win8 Pro,EF 6.1.3
编辑:删除了引入第二个gridview
的拼写错误答案 0 :(得分:4)
自动调整所有单元格意味着数据网格视图需要评估每列的结果。 EF需要提供每行的结果。您似乎可能绑定到外键列。如果行中的值与外表中的行不匹配,则datagridview将抛出此错误。 EF有一个问题,表中的值必须匹配外表中的情况敏感的值...无论SQL是否区分大小写。 EF正在使用CLR执行实体匹配...这是区分大小写的
答案 1 :(得分:1)
首先尝试添加数据然后再使用
{{1}}
答案 2 :(得分:0)
你也可以尝试这个
'modules' => [
'user-management' => [
'class' => 'webvimark\modules\UserManagement\UserManagementModule',
// Here you can set your handler to change layout for any controller or action
// Tip: you can use this event in any module
'on beforeAction' => function (\yii\base\ActionEvent $event) {
if ($event->action->uniqueId == 'user-management/auth/login') {
$event->action->controller->layout = 'loginLayout.php';
};
},
],
],