在EF Core中切换Sqlite或SqlServer的通用方法是什么?

7
我希望您能够在ASP.NET Core应用程序中,实现SQLite和SqlServer之间的动态切换作为Entity Framework的数据库提供程序。通常情况下,将DbContext与数据库提供程序关联的方法是通过在ConfigureServices方法中编写代码:
        services.AddDbContext<FeedbackDbContext>(options => options.UseSqlite(Configuration.GetConnectionString("Feedback")));

EF Core的每个数据库提供程序都添加了自己的扩展方法,如Use<Provider>

令人惊讶的是,我找不到一种在配置中指定连接字符串的数据库提供程序的方法。

3个回答

4

谢谢。我通常不会点赞只有链接的回答,但那篇文章确实很有帮助。 - Yogi

3

当仅涉及代码更改时,您应该修改上下文配置。在安装了Microsoft.EntityFrameworkCore.SqlServer NuGet包之后,您只需更改:

原始回答:

services.AddDbContext<FeedbackDbContext>(
    options => options.UseSqlite(Configuration.GetConnectionString("Feedback")));

to:

services.AddDbContext<FeedbackDbContext>(
    options => options.UseSqlServer(Configuration.GetConnectionString("Feedback")));

1
这并没有真正解决问题的“即时”性质。 - mlibby

1
如果您在同一连接上,可以更改数据库名称。我假设您需要关闭、更改,然后重新打开。我自己没有尝试过这个。
this.Database.GetDbConnection().ChangeDatabase("DB name");

否则,您可以更改要使用的连接字符串。
this.Database.GetDbConnection().ConnectionString = "new connection string";

我使用单独的部分文件来保存我的任何代码,以防止在数据库重建时被系统覆盖。您可以添加一个方法或属性来更改当前的连接字符串。同样,您可能需要关闭、更改和重新打开。
public partial class YourDbContext : DbContext
{
    void SetConnection(string s)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接