【问题标题】:C# Using strongly typed dataset tableadapter in data entry formsC# 在数据输入表单中使用强类型数据集 tableadapter
【发布时间】:2015-05-09 00:00:38
【问题描述】:

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

  1. 使用从数据输入表单返回的 dialog.Ok 来通知主表单调用表 tableadapter.update。

  2. 在对话框表单构造函数中传递相关的表适配器,并从对话框表单中调用更新方法。

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

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

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

在广泛搜索解决方案后,我找不到任何被广泛接受的解决方案来以另一种形式使用 tableadapter.update。

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

【问题讨论】:

    标签: c# forms tableadapter


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢史蒂夫,我同意这个原则很适合,但是我应该如何将表格适配器传递给对话框?哪种方法最稳健/最专业?
    • 嗨 ReefKnot,没有看到您的设计和代码,我建议让对话框表单为将与之交互的记录获取参数,它会根据需要为数据提供自己的 TableAdapter。这样,对话框是独立的,将打开它需要编辑的数据的可编辑视图,执行其任务并关闭。如果编辑的数据仍然可以在主窗体上查看,则需要刷新该数据。如果没有更改、被取消或出现错误,则无需刷新主窗体的数据。希望这能给你更多的继续......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 2011-03-08
    • 2011-06-22
    • 1970-01-01
    • 2012-04-09
    • 2018-03-04
    • 1970-01-01
    相关资源
    最近更新 更多