【问题标题】:Asp.net core 2.0 with entity framework database first approach with MYSQLAsp.net core 2.0 与实体框架数据库第一种方法与 MYSQL
【发布时间】:2018-09-26 03:07:37
【问题描述】:

我在 MYSQL 中只有一个现有的数据库编写脚本,我只想将所有表导入到我的带有实体框架核心的 asp.net core 2.0 Web 应用程序中。另外,我想在我的项目中使用数据库优先方法,以便所有表都应该使用 poco 类添加到项目中。所以请在这种情况下帮助我。

【问题讨论】:

  • 这方面有什么更新吗?

标签: c# mysql asp.net entity-framework-core asp.net-core-2.0


【解决方案1】:

1.运行以下命令:

 dotnet add package Microsoft.EntityFrameworkCore.Design
 dotnet add package MySql.Data.EntityFrameworkCore.Design

2。添加对 Microsoft.EntityFrameworkCore.Tools.DotNet 的引用

 <ItemGroup>
   <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.1" />
</ItemGroup>

3.搭建数据库

3.1 安装以下 NuGet 包

MySql.Data.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.Tools

3.2 脚手架

 Scaffold-DbContext `"server=localhost;port=3306;user=root;password=mypass;database=sakila" MySql.Data.EntityFrameworkCore -OutputDir sakila -f`

【讨论】:

  • 我遵循了这个但得到了以下错误。 PM> Scaffold-DbContext "server=localhost;port=3306;user=root;password=d4Developer@123; database=sakila" MySql.Data.EntityFrameworkCore -OutputDir sakila -f System.NotImplementedException: 方法或操作未实现。在 MySql.Data.EntityFrameworkCore.Scaffolding.Internal.MySQLDatabaseModelFactory.Create(String connectionString, IEnumerable1 tables, IEnumerable1 schemas)
  • 看看这个。它可以帮助你stackoverflow.com/questions/47952803/…
【解决方案2】:

Entity Framework 核心采用 Code First 方法。此解决方案适用于 SQL Server。您可以尝试以下步骤。

  1. 您针对数据库运行脚本。
  2. 下载并安装EF Core Power Tools
  3. 按照上面提到的说明,它会生成所有的模型 C# 项目中的 POCO 类。
  4. 运行Add-Migration(不要忘记在你的 DBContext),您将看到生成的迁移中的更改。所以 你有两个选择,要么你可以手动删除数据库,要么 然后运行Update-Database 命令,或者您可以在生成的迁移的Up 方法中删除自动生成的代码。

您也可以在GitHub 上找到该工具。

注意:对于触发器和存储过程,您必须在生成的迁移中手动调整脚本。

存储过程的步骤:

  1. 使用存储过程语法(如 AlterCreate 过程)添加文件。
  2. 运行Add-Migration 并生成空迁移。
  3. Up 方法中添加类似的代码。

    RunScript(migrationBuilder, @"PathToYouScript");
    
    private void RunScript(MigrationBuilder migrationBuilder, string scriptFilePath)
    {
        var migratorPath = Path.Combine("..", scriptFilePath);
    
        if (!File.Exists(migratorPath))
        {
            migratorPath = Path.Combine("..", "..", "..", "..", scriptFilePath);
        }
    
        migrationBuilder.Sql(File.ReadAllText(migratorPath));
    }
    
  4. 运行Update-Database

【讨论】:

    猜你喜欢
    • 2016-08-24
    • 2018-02-01
    • 1970-01-01
    • 2016-12-16
    • 2019-01-02
    • 2017-08-01
    • 1970-01-01
    • 2019-04-13
    相关资源
    最近更新 更多