C#在数据输入表单中使用强类型dataset tableadapter

C#在数据输入表单中使用强类型dataset tableadapter,c#,forms,tableadapter,C#,Forms,Tableadapter,我正在用C#中的windows窗体项目编写一个使用强类型数据集的数据库。数据库有一个主窗体和一系列数据输入窗体(对话框)。在使用tableadapter.update方法直接从数据输入对话框填写数据输入表单后,我想更新断开连接的SQL server数据库。我不确定这个问题最可靠的解决方案。我考虑过的一些选择如下 使用从数据输入窗体返回的对话框.Ok向主窗体发出调用tableadapter.update的信号 在对话框窗体构造函数中传递相关的表适配器,并从对话框窗体调用update方法 在对话框窗

我正在用C#中的windows窗体项目编写一个使用强类型数据集的数据库。数据库有一个主窗体和一系列数据输入窗体(对话框)。在使用tableadapter.update方法直接从数据输入对话框填写数据输入表单后,我想更新断开连接的SQL server数据库。我不确定这个问题最可靠的解决方案。我考虑过的一些选择如下

  • 使用从数据输入窗体返回的对话框.Ok向主窗体发出调用tableadapter.update的信号

  • 在对话框窗体构造函数中传递相关的表适配器,并从对话框窗体调用update方法

  • 在对话框窗体上设置一个属性,该属性设置用于更新对话框窗体的表格适配器

  • 在调用tableadpter.update的主窗体上编写一个公共方法,并从数据输入对话框中调用此方法

  • 有这么多选择,我很想知道其他人做了什么,以及我考虑过的每一种可能性中可能存在哪些看不见的陷阱

    在广泛搜索解决方案后,我找不到任何广泛接受的以其他形式使用tableadapter.update的解决方案


    我知道我可以将tableadapter拖放到我的对话框中,但我不希望这样做,因为它们已经在主窗体中创建了。

    根据我的经验,单一责任原则是一个很好的原则,并且非常适合这里

    如果您正在显示一个表单,用户将输入用于创建/编辑/删除等的值。我将让该表单完全自行执行所需的功能

    因此,如果用户在进行更改的对话框中单击“保存”或“确定”,我会让该表单对数据库执行更新。这样,如果存在验证问题等,它们将在用户当前所在的表单中处理


    更新成功后,我将关闭对话框,并更新主窗体的视图(如果适用)。

    谢谢Steve,我同意这一原则非常合适,但我应该如何将表适配器传递给对话框窗体?哪种方法最可靠/最专业?您好,如果没有看到您的设计和代码,我建议让对话框窗体为它将与之交互的记录获取一个参数,它将根据需要为数据提供自己的TableAdapter。这样,对话框是独立的,将打开需要编辑、执行任务和关闭的数据的可编辑视图。如果编辑的数据仍然可以在主窗体上查看,则会要求刷新该数据。如果没有更改、取消或错误,则无需刷新主窗体的数据。希望这能给你更多的继续。。。