从UI保留数据

时间:2010-08-05 15:06:59

标签: c# .net winforms entity-framework repository

我正在用EF4进行一些测试。我已经构建了一个包含一个表的简单数据库: 表:人 专栏:Id 列:名称

  • 我有一个包含带有gridview的表单的Windows窗体应用程序。
  • 我有Model.edmx所有设置并正常工作(测试时没有封装上下文)。
  • 我现在已将上下文封装到通用存储库(Repository)中。我正在学习如何使用Repository然后我将在UnitoOfWork上工作。
    • 我的存储库实现了CRUD。
  • My Repository有一个返回所有实体的方法(public List GetAll())。
  • 在我的Windows窗体中将List分配给我的bindingsource。这很有效。

我的问题: 我对如何将数据从UI保存回我的数据存储区感到困惑。

  • 我是否必须在表单上设置一些方法来检查更改/ ed?
  • 的数据
  • 我如何将其发送回存储库?我是否必须将其附加到上下文中?

我希望有人可以给我一些指导。感谢所有提前!如果您有任何问题,请告诉我。

1 个答案:

答案 0 :(得分:0)

需要在表单上触发事件,无论是按钮单击事件还是其他一些UI事件。在Windows窗体中,如果双击设计器中的按钮,它将为您创建事件处理程序。

在事件处理程序中,您需要利用另一个类,或直接使用EF Context。由于您正在使用存储库的路径,您可以利用设计器文件中的存储库类,但我建议通过服务层应用任何业务逻辑(即UI调用服务层,服务层使用内部存储库) )。

这使代码保持独立,并且更易于维护/重用。

但是,要将数据保存到数据存储区,它可能看起来像这样......

public void SetPersonName(int personID, string personName)
{
     var context = new PersonContext(myConnectionString);
     var person = context.Persons.Where(x => x.PersonID == personID).FirstOrDefault();

     if(person == null)
     {
          throw new InvalidOperationException("Boo Hoo, person ID is invalid");
     }

     person.Name = personName;
     context.SaveChanges();
}