gpt4 book ai didi

c# - 如何为SQL Server和MySql制作数据访问层

转载 作者:行者123 更新时间:2023-11-29 07:00:32 24 4
gpt4 key购买 nike

我正在构建数据访问层,需要能够在不同环境中的两个提供程序之间切换。

我该如何构建它?我正在使用存储库模式并且有例如一个 CarRepository 类和一个 Car 类。 CarRepository 类负责从数据库中保存、删除和加载。

我有一个Database 类,负责连接到数据库,并执行查询(为SQL Server 发送一个SqlCommand)。底层数据库的SQL语法不同,参数语法也不同(SQL Server使用@,MySql使用?)。

我想要一种可以让我的应用程序在两个平台上运行的花费最少的方法。

最明显的方法是制作一个MySqlCarRepository 和一个SqlServerCarRepository,但这会引入大量的维护工作。这种情况有什么好的方法吗?也许保留一个带有静态字符串的静态类,其中包含针对不同 SQL 风格的 SQL 语句? (那么参数语法呢?)

欢迎任何建议

(请注意 ORM(Nhibernate、Linq2Sql 等)不是一个选项)

最佳答案

我遵循的方法是首先使用 ADO Provider Factories 来抽象数据访问实现。所以我将在代码中使用 IDbConnection 等。

然后我有一个查询的抽象。然后我可以使用包含实际 sql 语句的 Query 对象。这些 Query 对象是从 RawQuery 或各种查询构建器(插入/更新/删除/等)创建的,这些构建器具有针对每种提供程序类型的实现。特定的原始查询将需要针对您需要的数据库进行编码和获取,因为没有通过它。

编写这个“管道”需要大量的腿部工作,而且我还没有遇到过我实际上需要不同平台的情况,所以我没有费心编写一些我知道需要解决的小部分,但你是如果您有兴趣查看一些代码,欢迎联系。

关于c# - 如何为SQL Server和MySql制作数据访问层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10410118/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com