如何通过参数使用实体框架在sqlserver和PostgreSQL之间切换

时间:2019-01-24 08:04:32

标签: sql-server postgresql asp.net-core entity-framework-core

我正在开发一个小项目,并且要求必须允许用户在sqlserver和postgresql或更多之间切换数据库。

我认为,我需要一个参数来将json配置文件中的数据库切换为:

“ DatabaseType”:“ MsSQL”

我的问题是我如何使用实体框架核心来实现?

我如何使用DbContext并切换它们?

对不起,如果我的英语不好。

1 个答案:

答案 0 :(得分:0)

要使用相同的DbContext切换数据库,您需要确保数据库映射了DbContext Structor。

为此,您可以尝试定义

之类的参数。
{
    "DatabaseType": "MsSQL1",

    "ConnectionStrings": {
        "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-TestIdentity2_2-C9C6DF1A-1A9A-497A-871E-618806FC959F;Trusted_Connection=True;MultipleActiveResultSets=true",
        "MySqlConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-MySql-2C4FD13B-62DA-4B5D-8C8C-8F9C42CD3A67;Trusted_Connection=True;MultipleActiveResultSets=true"

    },
}

Startup.cs中配置

services.AddDbContext<ApplicationDbContext>(options =>
{
    var dbType = Configuration["DatabaseType"];
    if (dbType == "MsSQL")
    {
       //change this to your postgresql config
        options.UseSqlServer(
            Configuration.GetConnectionString("MySqlConnection"));
    }
    else
    {
        options.UseSqlServer(
            Configuration.GetConnectionString("DefaultConnection"));
    }
});