在 EF Core 中在 Sqlite 或 SqlServer 之间切换的一般方法?

Chr*_*cke 7 sql-server system.data.sqlite entity-framework-core asp.net-core

我希望能够在使用 SQLite 和 SqlServer 作为 ASP.NET Core 应用程序中实体框架的数据库提供程序之间进行切换。

DbContext将 a与数据库提供程序关联的通常模式是通过ConfigureServices方法中的代码:

        services.AddDbContext<FeedbackDbContext>(options => options.UseSqlite(Configuration.GetConnectionString("Feedback")));
Run Code Online (Sandbox Code Playgroud)

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

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

小智 1

如果您位于同一连接上,则可以更改数据库名称。我认为您需要关闭、更改然后重新打开。我自己没有尝试过这个。

this.Database.GetDbConnection().ChangeDatabase("DB name");
Run Code Online (Sandbox Code Playgroud)

否则,您可以更改要使用的连接字符串。

this.Database.GetDbConnection().ConnectionString = "new connection string";
Run Code Online (Sandbox Code Playgroud)

我使用一个单独的部分文件来保存我自己的任何代码,以防止系统在任何数据库重建时覆盖。您可以添加方法或属性来更改当前的连接字符串。同样,您可能需要关闭、更改并重新打开

public partial class YourDbContext : DbContext
{
    void SetConnection(string s)
Run Code Online (Sandbox Code Playgroud)