- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想要一个强类型数据集和设计器 TableAdapter,但 Visual Studio 的数据集设计器会生成特定于提供程序(例如 SQL Server 与 MySql)的代码,我不想只提交给一个提供程序。 ORM 会有所帮助,但是:
这是我想出的:
“DataSets.Masters”包含绑定(bind)到某个特定提供程序(例如 SqlClient)的完全设计的数据集,包括:
DataSets.MyDataSetTableAdapters 命名空间除外的所有内容都被复制到“DataSets”项目中,其中删除了所有 TableAdapter 代码(连同 xs:annotation)。
DataSets.MyDataSetTableAdapters 命名空间连同 MyDataSet.xsd 等被复制并定制到“DataSets.SqlClient”、“DataSets.SQLite”等中。每个引用“数据集”程序集。
现在我只需要根据任何给定的连接字符串选择正确的程序集来加载我的 ITableAdapterManager 实现。当表架构发生变化时,我修改 Masters 程序集,将代码复制到生产程序集,并运行一些测试。
所以我的问题是:我是不是把它弄得太难了? DataSet 如此标准,通过数据访问层支持多个数据库引擎的需求如此普遍,有没有一种方法不涉及复制、粘贴和搜索和替换? 你是做什么的?
最佳答案
简单地忽略自动生成的 TableAdapter 命令并使用 ADO.Net data access factory objects 可能更容易何时进行 CRUD 操作。这样您就可以使用 DbProviderFactory.CreateCommandBuilder 正确格式化 CRUD 操作中的参数。请注意,这假设您没有进行任何棘手的属性映射,并且您的模式将在数据提供者之间保持一致。
如果您使用此技术,还有一个选项是创建一个类,您可以将其作为 TableAdapter 的 BaseClass 属性输入。添加一个“init”类型的方法,用工厂中的方法覆盖连接和插入、删除、选择和更新命令(基于自动生成的选择命令——应该兼容大多数提供商)。
关于c# - 每个数据库提供程序具有一组 TableAdapter 的强类型数据集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/484851/
有点背景故事,我在一台旧服务器上使用 MySQL Server 5.X。退役服务器并将所有数据迁移到安装了 MySQL 8.0.11(现为 8.0.12)的新服务器。使用旧版身份验证来减少问题。 这似
我有一个名为 DB.mdf 的数据库,在我的程序中我使用这段代码在这个数据库中插入一个新行: DBDataSet ds = new DBDataSet(); DBDataSetTableAdapter
我正在尝试更新一个 tableadapter。这是我的代码示例。 DestTableAdapter destTableAdapter = new DestTableAdapter(); Mission
我有一个项目,用户可以在其中的文本框中输入小数。现在,我获取该值并尝试将其解析为可为 null 的浮点变量,我将其传递给 tableAdapter 以插入或更新数据库。 这就是它变得奇怪的地方,如果我
我在我的 C# 项目中使用 ADO.NET。在我的表单中,我从 VS2010 的工具箱中添加了一个 SourceBinding 元素。我将连接设置为我的数据集表。它会自动为我创建一个 DataAdap
C#对比 2010.net v4.0 我向我的项目(类库)添加了一个数据集,当我尝试添加一个 TableAdapter 时,我添加到“设置”的连接字符串无法选择。我有其他可用数据源(来自服务器资源管理
这是我的功能: private void btnSave_Click(object sender, EventArgs e) { wO_FlangeMillBundle
我用你的标准智能控制东西制作了一个列表框,并将其连接到数据库。它获取我通过查询生成器预先生成的数据,所以当我这样做时: this.calibrate_swipesTableAdapter.Fill(t
我正在使用数据集和网络服务,在我的网络服务方法中,我调用并执行了我在数据库中创建的过程,所以我的问题是我有来自数据库的结果,但我不知道如何使用或调用数据本身。 我该怎么做? 我尝试搜索,但我得到的所有
我必须从连接到数据库 SQL 的 datagridview 中删除一行,但我不知道如何调用 Button_click(Delete) 中的方法。(例如 this.nameTableAdapter.De
我正在使用 C# 和 Winforms。我正在尝试制作一份报告,其中列出了在用户提供的日期范围内到期需要续订成员(member)资格的人员。我有一个到 Access 文件的连接,我正在尝试为 Tabl
我希望能够针对我拥有的表适配器执行自定义 SQL 查询。是否有可能做到这一点?或者我可以只在数据集设计 View 中的每个表适配器上使用预定义查询吗? 如果我不能这样做,我将如何对表执行 SQL 查询
我目前正在尝试设置我的 TableAdapter,但它不允许我使用参数(这使它变得毫无用处)- 当我创建一个新查询时 SELECT users.* FROM users WHE
我正在 WindowsApplication 中编写一个使用数据库的程序。我使用 DataGridView 显示数据库值。目前,我希望有可能通过 DataGridView 更新数据库,因此我写了这段代
我的数据库有一个没有主键的表,行被标识为列值的组合 - Memeber_Id 和 Book_Id。 我想在识别行后更新表中的第三列,但不知道该怎么做。我想用这样的东西- TableAdapter.Up
每次在 TextBox 中输入字符时,我都会尝试检查表中是否存在用户名。这是我的代码: 在 register.aspx.cs 文件中,我在 TextBox 上有一个 TextChanged 事件: p
我正在使用 Visual Studio 2013,想知道使用 TableAdapter 进行和运行查询与使用 MySqlCommand cmd = new MySqlCommand(); 之间有什么区
这个问题在这里已经有了答案: Changes to Access database do not persist when running app in Visual Studio (1 个回答)
我的数据库中有一个 View 表示为 TableAdapter,但我无法让它生成更新方法。 “创建将更新直接发送到数据库的方法 (GenerateDBDirectMethods)”显示为灰色。 我该如
我有一个包含一堆字段的数据表,它由 tableadapter 填充数据。通常,需要插入的记录有点不同(只有id)。我不希望用户再次重新输入所有内容,有没有一种快速的方法可以将当前记录插入数据库。请注意
我是一名优秀的程序员,十分优秀!