2013-03-04 81 views
0

你好,我很新的EF,并试图EF上的一些例子。通常我没有任何问题时,使用一个对象,但真正想知道的是,如何如果使用devexpress中的XtraGrid等网格,您是否可以使用它?使用实体框架使用网格来保存,更新和删除数据

通常,我使用绑定源到网格的数据源设置为环境中使用:

 private void Form1_Load(object sender, EventArgs e) 
    { 

     using (var context = new BeygirDataModeliContainer()) 
     { 
      beygirBindingSource.DataSource = context.BeygirSet; 
     } 


    } 

如果更改网格并设置事件:

using (var context = new BeygirDataModeliContainer()) 
     { 

      context.SaveChanges(); 
     } 

     gridControl1.RefreshDataSource(); 

它根本不变化或更新或实际上对数据库做任何处理。 这些例子可能关闭了,但有没有教程可以帮助我继续使用EF与网格和模型集合?

问候。

+1

您正在创建一个新的上下文,并保存它已记录的更改,这是没有的。你应该保持上下文的变化,然后调用'SaveChanges'。 – 2013-03-04 15:04:46

回答

0

保持你的实体上下文“活着”。 A using每次接近时,都会呼叫Dispose

using (var context = new BeygirDataModeliContainer()) 
{ 
    beygirBindingSource.DataSource = context.BeygirSet; 
}//context.Dispose() is call here 

你应该尝试这样的事情。

BeygirDataModeliContainer context; 
private void Form1_Load(object sender, EventArgs e) 
{ 
    context = new BeygirDataModeliContainer()   
    beygirBindingSource.DataSource = context.BeygirSet; 
} 
private void ApplyButton(object sender, EventArgs e) 
{ 
    context.SaveChanges(); 
} 

private void CancelButton(object sender, EventArgs e) 
{ 
    context.Dispose(); 
    context = new BeygirDataModeliContainer() 
    beygirBindingSource.DataSource = context.BeygirSet; 
    gridControl1.RefreshDataSource(); 
}