【发布时间】:2018-11-28 01:39:19
【问题描述】:
我有一个使用 LocalDB 的简单 ASP.Net Core/Entity Framework Core 项目。它在 Windows 上编译并运行良好。
我想在 Windows 和 Linux 上构建和运行相同的项目。但是 Linux 不支持 LocalDB。所以我需要将项目配置为使用 mySql,但仅适用于 Linux。
问:如何配置我的项目,以便我可以在 Windows 上使用 LocalDB,而在 Linux 上使用 mySql?
这是我迄今为止尝试过的:
创建了一个空的 mySql 数据库并授予了一个 mySql 用户的访问权限。
-
在
appsettings.json中创建了一个mySql连接字符串:{ "ConnectionStrings": { "DefaultConnection": "Server=(LocalDb)\\MSSQLLocalDB;Database=ManageCarDB;Trusted_Connection=True;MultipleActiveResultSets=true", "mySqlConnection": "Server=localhost;port=3306;database=ManageCarDb;uid=dotnetuser;password=dotnetuser" },... <= I've defined two different connection strings: one for LocalDB, one for MySql -
更新
Startup.cs:public void ConfigureServices(IServiceCollection services) { string env = System.Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"); string connectionString; if (!string.IsNullOrEmpty(env) && env.Equals("Linux")) { connectionString = Configuration.GetConnectionString("mySqlConnection"); services.AddDbContext<ApplicationDbContext>(options => options.UseMySQL(connectionString)); } else { connectionString = Configuration.GetConnectionString("DefaultConnection"); services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(connectionString)); } -
在 Linux 上:
- 已删除所有二进制文件
dotnet restoredotnet ef migrations add newMigration -c ApplicationDbContext -v
-
尝试更新数据库:
dotnet ef database update错误:表“ManageCarDb.__EFMigrationsHistory”不存在
问:鉴于我想要一个用于两种 EF 环境的项目,我是否采取了正确的步骤?
还是我应该采取不同的方法?
【问题讨论】:
标签: c# asp.net-core entity-framework-core