【问题标题】:Entity Framework not reload my UPDATED data实体框架不重新加载我的更新数据
【发布时间】:2013-09-16 09:35:39
【问题描述】:

我对 Visual Studio 或实体框架有疑问。 情况很简单: 我有员工,并且我有当前的数据网格视图,当我点击编辑员工时,我会从员工那里获得 ID

int employeID= Convert.ToInt32(dgvEmployes.SelectedRows[0].Cells[0].Value);
frmEditEmploye edit = new frmEditEmploye ();
edit.employ = new ePoliticsServis.Data.Employ();
edit.employ= eServis.Data.EmployesService.SelectEmployeById(employeID);

我从 db 获得 Employe,我以新形式加载员工进行编辑,我保存更新的日期,然后进入数据库刷新表,一切都很好,一切都更新了,但问题是,当我回到预览时, datagrid 视图(datagrid 使用新数据刷新,绑定,一切正常),然后再次单击同一员工进行编辑,我有用于编辑的表单,但使用旧数据,没有来自同一员工的数据库中新更新的数据,当我击落时我的应用程序并再次运行,然后我重新释放和更新了新数据。我真的不知道问题出在哪里..

【问题讨论】:

    标签: c# entity-framework datagridview frameworks entity


    【解决方案1】:

    我怀疑问题是您的数据上下文是从内存而不是数据库中检索数据,请参阅我以前的answer 以获得可能的解决方案。

    请记住将数据上下文包含在 Using 语句中以正确处理它。

    从您的最新评论中,我可以看到您可能没有正确处理您的上下文,我认为这在您的代码中称为“连接”。这大概是类的成员变量,

    您可能需要将方法更改为以下内容:

    //需要检查Connection的类型并在这里使用。我正在使用“连接”,因为我不知道您的上下文名称。

    Using (var myContext = new Connection()) 
    {
      var returnValue =  myContext.dm.epsp_Employ_SelectById(id).FirstOrDefault();
    }
    
    return returnValue;
    

    还有一件事...在保存记录后检查数据库是否正在更新。如果不是,您需要调用 SaveChanges()。

    【讨论】:

    • 是的,我想我必须刷新我的数据库上下文?我会在哪里做这个?
    • context.Refresh(RefreshMode.StoreWins, myObject);这是一个 refreehs 的例子,我会在哪里调用这个方法?我会在哪里找到我的上下文名称?
    • 从您的示例代码中可以看出,它很可能在 eServis.Data.EmployesService.SelectEmployeById 方法中。
    • 你需要看什么?我会发给你任何东西,epolitic 是我的项目名称 data 是 EDMX 文件的文件夹以及其他数据服务文件夹和类,如 EmployeService、CustomerService 等。非常感谢,请帮助
    • public static Employ SelectEmployById(int id) { return Connection.dm.epsp_Employ_SelectById(id).FirstOrDefault(); }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多