代码之家  ›  专栏  ›  技术社区  ›  paulsm4

EF Core:如何为Linux配置mySql,为Windows配置localDB?

  •  1
  • paulsm4  · 技术社区  · 7 年前

    我有一个简单的ASP.Net核心/实体框架核心项目,它使用LocalDB。它在Windows上编译并运行良好。

    这就是我迄今为止所尝试的:

    1. 在中创建了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
      
    2. 更新 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

    3. 在Linux上:

      1. 已删除所有二进制文件
      2. dotnet restore
      3. dotnet ef migrations add newMigration -c ApplicationDbContext -v

      <

    4. 已尝试更新数据库:

      dotnet ef database update

      <= 错误:表“ManageCarDb.\u EFMigrationsHistory”不存在

    问:鉴于我希望两种环境都有一个项目,我是否采取了正确的步骤?

    还是我应该采取不同的方法?

    1 回复  |  直到 7 年前
        1
  •  3
  •   Khai Nguyen    7 年前

    您应该使用`Pomelo.EntityFrameworkCore.MySql,而不是Oracle的MySql库。

    我用 Pomelo.EntityFrameworkCore.MySql 它在我的项目中运行良好。

    Oracle的MySql库不支持迁移,正如我尝试的那样。这个图书馆面临着几个问题

    :我正在为Oracle的站点找到一个讨论此问题的链接

    Error: The method or operation is not implemented. while scaffolding MYSQL Database

    https://bugs.mysql.com/bug.php?id=90368

    推荐文章