净:如何创建独立于供应商的数据集,TableAdapter的,绑定(DB决定在运行时)(.Net:

2019-06-24 10:01发布

我有一个C#Windows窗体应用程序,它的原型SQL服务器(强类型数据集)上创建。 在它的最终版本,应用程序必须能够通过SQL服务器,MySQL或Oracle中工作。

现在我想知道哪些部分(如果有的话)可以从原型被重用。 1.数据集(类型)? 2. TableAdapter的? (可能不是,它们包含SQL Server特定的语法)3.绑定到DataGridViews

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

也许无关紧要:如果我们创建一个实体模型,从现有的DB模式(据我所知它提供DB独立),我们可以用这个莫名其妙地创建绑定到我们的datagridviews?

谢谢!

因此,为了保持我们的绑定和dataGridViews,以及我们已经实施了一些额外的逻辑,我们应该扔掉所有生成的TableAdapter并手动写? 如果我们不把它们扔掉,我们应该用DataAdapters呢?

这是一个“由这书”的做法? 有没有人做过这样的事情?

更一般地,如果你需要创建一个窗体应用程序在多个DBS工作,你会怎么做它:A.用手工B.创建非类型化数据集,dataadapters /的TableAdapter和绑定莫名其妙地产生独立于供应商的数据集和dataadapters / TableAdapter的(怎么样?),并在设计时通过VS GUI C.其他方式约束他们???

更新:

因此,为了保持我们的绑定和dataGridViews,以及我们已经实施了一些额外的逻辑,我们应该扔掉所有生成的TableAdapter并手动写? 如果我们不把它们扔掉,我们应该用DataAdapters呢?

这是一个“由这书”的做法? 有没有人做过这样的事情?

更一般地,如果你需要创建一个窗体应用程序在多个DBS工作,你会怎么做它:A.用手工B.创建非类型化数据集,dataadapters /的TableAdapter和绑定莫名其妙地产生独立于供应商的数据集和dataadapters / TableAdapter的(怎么样?),并在设计时通过VS GUI C.其他方式约束他们???

Answer 1:

  1. 该类型化的DataSet /表是独立于数据库。 (但是,如果你在设计中添加适配器,他们得到的DB-具体..不要使用适配器从设计师
  2. 该适配器独立于数据库。
  3. 数据绑定是独立于数据库。 拖放数据绑定的,但要注意自动添加适配器


我的建议:

  • 从DataSet设计器中取出adpaters
  • 重写你自己的仓库/使用一个简单的类与GET /填写表格的方法适配器。 所以,你使用它们,而不是生成的适配器。 这些类可以是DB-具体。 因此,例如一个PersonRepositorySqlServer,PersonRepositoryMySql。 或者,也许你给DB型与构造重用SQL尽可能..
  • 如果您在使用表格适配器,删除它们。 手工代码的数据集的填充

我总是这样回答的问题,剩下的

  • 我使用类型数据集,但我只是做了表,而不是适配器
  • 因为有时设计师弄乱我Usualy代码数据绑定,但是这是没有必要成为独立分贝
  • 我写的使用适配器来填充/获取/更新的数据表我自己的资料库。 不过,我的手进行编码。 给定一个类型化的DataTable这是相当容易auomatically产生更新/插入/删除/填充的方式陈述..



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



Answer 2:

很多问题,这里一些答案:

  • 数据集DB独立。 类型化数据集可能也是如此。
  • DataAdapters是迄今为止DB依赖,因为它们包含SQL交谈的DB
  • 有抽象和可能性工作独立于供应商的基本概念ADO.NET(的IDbConnection,IDbCommand的等)
  • 您也可以结合普通的老C#对象的BindingSource和朋友。 如果你沿着这条路走下去准备抛出几乎所有一切你原型。 您将需要一个框架,可以“实体”和DB之间的转换。 这将取决于该框架是什么在你的实体的限制,以及如何你的数据库独立的样子。


文章来源: .Net: how to create vendor independent Dataset, Tableadapters, bindings (DB decided at runtime)