У меня есть простой проект ASP.Net Core / Entity Framework Core, который использует LocalDB.Он компилируется и отлично работает в Windows.
Я хотел бы собрать и запустить один и тот же проект в Windows и Linux.Но LocalDB не поддерживается в Linux.Поэтому мне нужно настроить проект на использование mySql вместо этого - но только для Linux.
Q: Как настроить мой проект так, чтобы я мог использовать LocalDB в Windows, но mySql в Linux?
Это то, что я пробовал до сих пор:
Создал пустую базу данных mySql и предоставил доступ пользователю mySql.
СоздалСтрока подключения 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));
}
<= При запуске будет условно вызываться либо строка подключения MySql / данные MySQLпровайдер или по умолчанию / LocalDB </p>
В Linux:
- удалены все двоичные файлы
dotnet restore
dotnet ef migrations add newMigration -c ApplicationDbContext -v
<= Все это работало ОК </p>
Пытался обновить базу данных:
dotnet ef database update
<= <strong>ОШИБКА: Таблица 'ManageCarDb .__ EFMigrationsHistory' не существует
В: Учитывая, что мне нужен один проект для обеих сред EF, я беруправильные шаги?
Или я должен выбрать другой подход?