我希望能够在使用SQLite和SqlServer作为ASP.NET Core应用程序中Entity Framework的db提供程序之间进行实时切换。
将DbContext
与数据库提供程序相关联的通常模式是通过ConfigureServices
方法中的代码进行>
services.AddDbContext<FeedbackDbContext>(options => options.UseSqlite(Configuration.GetConnectionString("Feedback")));
每个EF Core数据库提供程序都将自己的扩展方法添加为Use<Provider>
。
令我惊讶的是,我找不到在config中为连接字符串指定数据库提供程序的方法
答案 0 :(得分:1)
非常好的文章,展示了如何具有两个上下文,每个DbProvider一个,并且还能够生成不同的迁移:
答案 1 :(得分:0)
如果您使用相同的连接,则可以更改数据库名称。我认为您需要关闭,更改然后重新打开。我自己还没有尝试过。
this.Database.GetDbConnection().ChangeDatabase("DB name");
否则,您可以更改要使用的连接字符串。
this.Database.GetDbConnection().ConnectionString = "new connection string";
我使用一个单独的部分文件来保存我自己的任何代码,以防止系统在任何数据库重建时覆盖。您可以添加方法或属性来更改当前连接字符串。同样,您可能需要关闭,更改并重新打开
public partial class YourDbContext : DbContext
{
void SetConnection(string s)
答案 2 :(得分:0)
您应该可以更改:
来自:
services.AddDbContext<FeedbackDbContext>(
options => options.UseSqlite(Configuration.GetConnectionString("Feedback")));
收件人:
services.AddDbContext<FeedbackDbContext>(
options => options.UseSqlServer(Configuration.GetConnectionString("Feedback")));