我有一个简单的ASP.Net核心/实体框架核心项目,它使用LocalDB。它在Windows上编译并运行良好。
这就是我迄今为止所尝试的:
-
-
在中创建了mySql连接字符串
appsettings.json
:
{
"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));
}
<=Startup将有条件地调用MySql连接字符串/MySql数据提供程序或默认值/LocalDB
-
在Linux上:
-
已删除所有二进制文件
-
dotnet restore
-
dotnet ef migrations add newMigration -c ApplicationDbContext -v
<
-
已尝试更新数据库:
dotnet ef database update
<=
错误:表“ManageCarDb.\u EFMigrationsHistory”不存在
问:鉴于我希望两种环境都有一个项目,我是否采取了正确的步骤?
还是我应该采取不同的方法?