问题标签 [provider-independent]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
2057 浏览

.net - 如何设计独立于提供者的 DAL

我目前正在开发一个查询构建器应用程序,基本上是一个简单的图形界面,它应该允许不了解 SQL 的用户在数据库上定义各种查询(连接、SELECT、INSERT、UPDATE、DELETE)。我将使用 .NET 3.5。我的应用程序应该支持多个数据库,它应该与 MS-SQL Server、MySQL 和 Oracle 一起使用,所以我希望能提供任何提示或链接到有关如何设计独立于提供程序的 DAL 的相关讲座。

用户将选择一个数据库服务器,当前服务器上的一个数据库,提供连接凭据,选择各种表,定义查询(使用一系列组合框),如果查询有效,则最终执行查询。当然,在 DAL 中,我确实希望为每个数据库提供程序提供方法。我正在考虑工厂模式的一些内容。

注意:这是一个简单的学校项目,所以我对结果查询的安全性或性能不感兴趣。

更新:经过更多研究和您提供的非常有价值的输入,我决定使用DbProviderFactory. ORM 会很有趣,但是因为我只想要一个查询分析器/构建器,所以我看不出使用它的意义。因此,如果您能向我指出有关如何使用DbProviderFactory和相关类的详细教程,我将不胜感激。

0 投票
2 回答
288 浏览

.net - .net:DataSet 和 TableAdapters 是否与数据库和供应商无关?

我们需要我们正在构建的应用程序与数据库无关。特别是,我需要它能够与 SQL Server、Oracle 和 MySQL 一起工作。将来,可能还会将其他数据库供应商添加到列表中。当然,要使用的任何数据库都将具有相同的模式。

为了构建一个原型来演示接口,我们将模式加载到 SQL Server DB 中,然后为该数据库生成 DataSet 和 TableAdapter。由于数据集是由数据库的特定实例生成的,我怀疑生成的 DataSet 和 TableAdapter 不是独立于供应商的。此外,我什至不确定它们是否可以用于另一个 SQL Server 数据库实例。

我的问题是:有没有办法将相同的自动生成的 DataSet 和 TableAdapter 与不同的数据库(可能还有供应商)一起使用?

干杯,

马科斯

0 投票
2 回答
334 浏览

entity-framework - 实体框架:是否有任何智能方法来实现数据访问,以便我可以将 web.config 设置切换到切换提供程序

我想以一种可以使用 web.config 中的单个设置从 excel 切换到 sqlite 或 ms sql server 的 ms 访问的方式在实体框架中实现数据访问层。

有什么好的建议或例子吗?

0 投票
1 回答
216 浏览

sql-server - 如何为 SQL Server Compact 和 SQL Server 使用相同的 EF 实体?

我有一个项目来创建一个可以在两种模式下运行的程序:

  1. 内部用户访问集中式数据库 (SQL Server) 并可以查看/编辑彼此的项目,或者

  2. 外部客户在本地创建自己的所有数据 (SQL Server Compact),并通过电子邮件将其打包成 XML 以请求报价。

问题是,要最大限度地减少维护并最大限度地提高 EF 功能,最好的方法是什么?我还想在 SQL Server 中使用存储过程进行写操作,但如果太麻烦,这不是首要任务。

我可以在部署之前手动创建一个单独的 SSDL,但这是额外的工作并且容易出错。我可以先使用 Model First,但我认为这会使两个提供商的数据库更新变得复杂。我可以使用 DbContext Generator T4 模板进行 Code First 方向,但是我失去了很多 EF 的好处,比如更改跟踪和存储过程映射。而对于 CF,我必须大大增强 T4 模板,否则我仍然必须创建一个单独的 SSDL。

是否有文章或任何工具可以使这更容易?

编辑:我决定完成此任务的最佳方法是使用 Code First 来创建我的模型并使用新的代码优先迁移。通过迁移,我可以为完整的服务器实例生成一个更改脚本,并且可以将完整的更改应用于本地 CE 数据库。另一个优点是我可以完全控制我的连接字符串,并且可以真正将它指向任何提供者。

手动创建 POCO 类、创建配置类(我更喜欢通过 Fluent API 定义)以及将额外内容(如唯一索引)添加到第一个迁移类是一些额外的工作,但最终它最少整体工作。

稍后我将不得不弄清楚如何分流存储过程的使用,但届时 EF 5 可能可用并解决了我的问题。