C# 从UI持久化数据
我正在用EF4做一个小测试。我构建了一个简单的数据库,其中包含一个表: 表:人 列:Id 列:名称C# 从UI持久化数据,c#,.net,winforms,entity-framework,repository,C#,.net,Winforms,Entity Framework,Repository,我正在用EF4做一个小测试。我构建了一个简单的数据库,其中包含一个表: 表:人 列:Id 列:名称 我有一个windows窗体应用程序,其中包含一个带有gridview的窗体 我已经对Model.edmx进行了所有设置,并且工作正常(在不封装上下文的情况下进行了测试) 现在,我已经将上下文封装到一个通用存储库(repository)中。我正在学习如何使用存储库,然后我将在UnitoOfWork上工作。 我的存储库实现了CRUD 我的存储库有一个返回所有实体的方法(public List G
- 我有一个windows窗体应用程序,其中包含一个带有gridview的窗体李>
- 我已经对Model.edmx进行了所有设置,并且工作正常(在不封装上下文的情况下进行了测试)
- 现在,我已经将上下文封装到一个通用存储库(repository)中。我正在学习如何使用存储库,然后我将在UnitoOfWork上工作。
- 我的存储库实现了CRUD李>
- 我的存储库有一个返回所有实体的方法(public List GetAll())
- 该列表在我的windows窗体中分配给我的bindingsource。这很有效,很好
- 我是否必须在表单上设置一些方法来检查更改/删除的数据
- 如何将其发送回存储库?我必须将其附加到上下文吗
我希望有人能给我一些指导。提前感谢大家!如果您有任何问题,请告诉我。需要在表单上触发事件,无论是按钮单击事件还是其他UI事件。在Windows窗体中,如果双击设计器中的按钮,它将为您创建事件处理程序 在事件处理程序中,您需要利用另一个类,或者直接使用EF上下文。由于您正在使用存储库,因此可以利用设计器文件中的存储库类,尽管我建议您通过服务层应用任何业务逻辑(即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();
}
我使用的解决方案,我希望是正确的。。。我正在使用bindingsource的listchanged事件通知repo到CRUD。