.Net:如何创建独立于供应商的数据集、表适配器、绑定(数据库在运行时决定)

2023-12-29

我有一个 C# Windows 窗体应用程序,其原型是在 SQL Server(强类型数据集)上创建的。在其最终版本中,应用程序必须能够在 SQL Server、MySQL 或 Oracle 上运行。

现在我想知道原型中的哪些部分(如果有)可以重复使用。 1. 数据集(类型化) ? 2.表适配器? (可能不是,它们包含 SQL Server 特定的语法) 3. 绑定到 DataGridView

最重要的是,如果我们需要重新实现这一切,有没有办法在设计时做到这一点?或者, 1.我们是否需要以编程方式创建非类型化数据集? 2.我们是否需要以编程方式创建其数据适配器(或表适配器)?如果是,两者中的哪一个? 3.我们是否需要以编程方式创建其与界面的datagridviews的绑定?

也许无关紧要:如果我们从现有的数据库模式创建一个实体模型(据我所知它提供了数据库独立性),我们可以使用它以某种方式创建到我们的 datagridviews 的绑定吗?

谢谢你!

那么,为了保留我们的 Bindings 和 dataGridViews,以及我们已经实现的一些额外逻辑,我们是否应该扔掉所有生成的 TableAdapter 并手动编写它们?如果我们确实扔掉它们,我们应该使用 DataAdapter 来代替吗?

这是一种“按书本”的方法吗?有人做过这样的事吗?

更一般地说,如果您需要创建一个表单应用程序以在多个数据库中工作,您会这样做吗:A. 使用非类型化数据集、数据适配器/表适配器和手动创建的绑定 B. 以某种方式生成独立于供应商的数据集和数据适配器/表适配器(如何?)并在设计时通过 VS gui C 绑定它们。其他方式???

UPDATE:

那么,为了保留我们的 Bindings 和 dataGridViews,以及我们已经实现的一些额外逻辑,我们是否应该扔掉所有生成的 TableAdapter 并手动编写它们?如果我们确实扔掉它们,我们应该使用 DataAdapter 来代替吗?

这是一种“按书本”的方法吗?有人做过这样的事吗?

更一般地说,如果您需要创建一个表单应用程序以在多个数据库中工作,您会这样做吗:A. 使用非类型化数据集、数据适配器/表适配器和手动创建的绑定 B. 以某种方式生成独立于供应商的数据集和数据适配器/表适配器(如何?)并在设计时通过 VS gui C 绑定它们。其他方式???


  1. 类型化数据集/表是独立于数据库的。 (但是,如果您在设计器中添加适配器,它们将获得特定于数据库的适配器。不要使用设计器中的适配器
  2. 适配器ARE NOT数据库独立。
  3. 数据绑定是独立于数据库的。但要注意拖放数据绑定会自动添加适配器


我的建议:

  • 从数据集中删除适配器 设计师
  • 使用带有获取/填充方法的简单类重写您自己的存储库/适配器 表。因此您可以使用它们而不是生成的适配器。这些类可以是特定于数据库的。例如 PersonRepositorySqlServer、PersonRepositoryMySql。或者,也许您可​​以为 db 类型提供构造函数以尽可能地重用 SQL。
  • 如果您在表单上使用了适配器, 将它们移至.手动编码填充 数据集的

我总是做什么来回答其余的问题

  • 我使用类型化数据集,但我只制作表格而不是适配器
  • 我通常对数据绑定进行编码,因为有时设计者会搞砸,但这不一定是独立于数据库的
  • 我编写自己的存储库,使用适配器来填充/获取/更新数据表。然而 我用手对它们进行编码。给定一个类型化的数据表,自动生成更新/插入/删除/填充语句是相当容易的。



重写适配器看起来很难,但实际上是相当可行的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.Net:如何创建独立于供应商的数据集、表适配器、绑定(数据库在运行时决定) 的相关文章

随机推荐

  • 如何使用 AngularJs 调整 SVG viewBox 的大小?

    类似问题的解决方案涉及 CSS 和img tag 但是 我无法使用 img src myFile svg 因为 SVG 包含 Angular 指令 例如
  • ncurses 捕获扩展键(Control-left、Shift-Function 等)

    我试图在我的 ruby 程序中捕获 Control Left Shift F10 等 通常 仅使用 getch 我会得到一个有效的整数列表 例如 27 91 50 50 126 但我担心这些可能取决于系统或终端 经过谷歌搜索后 我发现了 u
  • 为什么Java的String.getBytes()使用“ISO-8859-1”

    来自 java lang StringCoding String csn charsetName null ISO 8859 1 charsetName 这是 Linux jdk 7 中 Java lang getBytes 使用的内容 我
  • Android - 检查设备是否连接到互联网

    有没有简单的方法 如何检查设备是否主动连接到互联网 通过 GPRS EDGE UMTS HSDPA 或 Wi Fi 连接 Thanks 是的 我使用 isReachable public class Extras public static
  • 仿真期间的 Modelica 输出文件

    我进行了很长时间的模拟 并且需要在模拟继续时检查输出 另一个原因是我正在进行实时模拟 所以我也想实时查看输出 如果 OpenModelica 在模拟过程中创建一个输出文件 以便我可以使用第 3 方工具 也许是 Python 读取并绘制它 那
  • 什么是定点整数?

    In http microformats org wiki hreview aggregate http microformats org wiki hreview aggregate it says rating 必需的 定点整数 1 0
  • ggplot2 中的条形图

    有人会帮助使用绘制条形图吗ggplot2对于此数据 我无法为此数据开发条形图 在 ggplot 中 您应该使数据采用更长的格式 为此你可以使用pivot longer from tidyr 这样你就可以创建一个像这样的堆积条形图 df lt
  • SQL Server 2008 - 当列为空时设置一个值

    我正在 SQL Server 2008 数据库上执行 SELECT 语句 SELECT Name DOB Address1 Address2 City State Zip FROM Users 但是 如果上述任何列对于特定行恰好为空 我想将
  • 刺尾没有优雅地退出

    我正在使用以下任一命令通过 Maven 运行 Thorntail 2 2 1 Final 微服务 mvn thorntail start mvn thorntail run 它运行良好 但是当我击中时Ctrl C它不会退出应用程序 即控制台
  • 循环遍历 xml 元素

    我有以下内容 aMyArray null xml userfile Get Content C AppSense Scripts AmPolicyConversion AM dev xml i 0 FOREACH j in userfile
  • numpy.ndarray 与 pandas.DataFrame

    我需要对程序中保存统计数据帧的数据结构基础的选择做出战略决策 我在一张大表中存储了数十万条记录 每个字段都有不同的类型 包括短字符串 我会对需要快速实时完成的数据进行多重回归分析和操作 我还需要使用一些相对流行且支持良好的东西 我知道以下参
  • 如何从通过 API 返回的 Task 获取值以进行单元测试

    我使用 ASP NET MVC Core v2 1 创建了一个 API 我的一个HttpGet方法设置如下 public async Task
  • MySQL按出现次数排序

    我正在两个名为的文本字段中进行搜索Subject and Text对于特定的关键字 为此 我使用LIKE陈述 我在尝试按出现次数对结果进行排序时遇到了问题 我的搜索查询如下所示 SELECT FROM Table WHERE Text LI
  • 在 Gnuplot 中,如何在第三列等于 0 时使点为一种颜色,否则为另一种颜色?

    我需要根据一列中的颜色改变一行值的点颜色 数据 x y z 1 3 0 1 5 6 3 5 2 4 5 0 如果该列为零 则颜色应为一个值 如果第三列中的值非零 则颜色应为不同的颜色 所以 我假设 plot file dat u 1 2 3
  • 在 Linux 中删除文件名中的空格[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我在不同的文件夹中有数百个 jpg 文件 如下所示 304775 105 01 jpg 304775 105 03 jpg 304775 105 05
  • DUAL 的魔力

    正常情况下 不使用SYS或者也许使用它 SQL gt select from dual D X 在不太正常的条件下 连接为SYS SQL gt alter database close Statement processed SQL gt
  • WPF 树视图蓝调。我想选择一个项目

    我正在尝试选择一个 TreeViewItem 现在 我可以访问包含的 TreeViewItem 并告诉它展开 以便我可以选择它的孩子 如果它已经展开 一切都很好 如果没有 那么我运行以下代码 EventHandler selector ne
  • MYSQL LEFT JOIN 与 CASE 优化

    我花了一些时间尝试使用 CASE 来处理这个 SELECT 但我失败了 感谢我现在正在使用 COLASCE 如何使用 CASE IF 语句优化此 SELECT 这是从字段选择的不同表中查询的快速方法吗 SELECT a folderid a
  • 将 Eclipse 从 Indigo 升级到 Juno 时我可以保留我的设置吗?

    如何将 Eclipse 从 Indigo 升级到 Juno 而不会丢失所有自定义设置 我尝试了两种不同的方法 但都不起作用 从 Indigo 导出首选项并导入 Juno 在 Indigo 工作区的副本上运行 Juno 每次升级都得从头开始真
  • .Net:如何创建独立于供应商的数据集、表适配器、绑定(数据库在运行时决定)

    我有一个 C Windows 窗体应用程序 其原型是在 SQL Server 强类型数据集 上创建的 在其最终版本中 应用程序必须能够在 SQL Server MySQL 或 Oracle 上运行 现在我想知道原型中的哪些部分 如果有 可以