【发布时间】:2015-04-28 19:14:30
【问题描述】:
我有一个用 C# 编写的应用程序,它目前混合使用数据集和一些使用 Advantage 数据库服务器的硬编码 SQL 语句/存储过程。
我现在希望我的应用程序也支持 MS-SQL。
我有几个选择:-
1) 分支源代码并手动进行语法更改以启用 MS-SQL 支持。这样做的缺点显然是多个代码库。
2) 将所有 DB 代码移动到 2 个单独的库中(一个用于 ADS,一个用于 MS-SQL),并根据 DB 为最终用户提供正确的库。我不确定如何设置它,理想情况下,我希望在我的 VS 解决方案中同时拥有两个库项目,并且能够在使用它们之间切换,最好是在调试和运行时。这可能吗?
3) 开始使用支持两个数据库后端的 DAL。如果我要开始使用 EF,是否可以最初基于现有的 ADS 数据库生成架构,然后在运行时将连接切换到使用相同架构的 MS-SQL 数据库,或者创建两个更好每个数据库的上下文/模式,并在运行时以某种方式切换它们,即是否可以创建一个通过配置设置返回相关上下文的方法,例如
dbcontext = new GetDBContext();
DbContext GetDBContext()
{
if( configsetting == "ADS")
return new AdsDBContext();
else
return new MSSQLDBContext();
}
我想做的是进行增量更改,以便程序继续在现有 ADS 数据库上运行,同时慢慢适应 MS-SQL/其他数据库后端。
问候
迈克
【问题讨论】:
标签: c# .net sql-server entity-framework advantage-database-server