mysql - 在 .net core 和 pomelo 驱动程序上使用 EF Core 搭建 mysql 时缺少存储过程

标签 mysql stored-procedures .net-core entity-framework-core

我正在尝试针对 mysql 数据库使用 EFCore 中的脚手架,其中生成的代码将在 Linux CentOS(NetCoreApp 框架)上运行。我正在使用 VS2015 Update3 在 Windows 上进行开发。

表已成功逆向工程,但不包括存储过程。如果没有存储过程,恐怕我们将不得不放弃 EFCore。


  • EFCore 中针对 mysql 的脚手架是否支持逆向工程存储过程?
  • 使用任意驱动程序组合?
  • 假设目前 EFCore 不具备此功能,您是否知道有任何付费或无偿的解决方案来实现此目的 - 对现有 mysql 数据库进行逆向工程以在 CentOS 上的 netcoreapp 中使用?

作为示例案例,我从带有单个表和无参数存储过程的 mysql 数据库开始。我想我正在使用最新的 EFCore 和 Pomelo 驱动程序,如下面的 project.json 所示...

{
  "version": "1.1.0-*",
  "buildOptions": {
    "emitEntryPoint": true
  },

  "tools": {
    "Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final"
  },

  "dependencies": {
    "Microsoft.EntityFrameworkCore.Design": "1.1.0",
    "Pomelo.EntityFrameworkCore.MySql": "1.1.1-prerelease-10011",
    "Pomelo.Data.MySql": "1.0.0",
    "Pomelo.EntityFrameworkCore.MySql.Design": "1.1.1-prerelease-10011",
    "Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final"
  },

  "frameworks": {
    "netcoreapp1.1": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.1.0-*"
        }
      }
    }
  }
}

完成dotnet Restore后,使用以下命令调用脚手架...

Scaffold-DbContext "server=localhost;user id=root;password=;database=simpledb" Pomelo.EntityFrameworkCore.MySql -OutputDir Models -force

运行脚手架后,无论是在我的真实案例还是简单的测试案例中,生成的代码都只包含表,不包含存储过程。

最佳答案

Pomelo 和最新版本的 Entity Framework 存在已知问题。

使用此配置对我有用:

Microsoft.EntityFrameWorkCore 2.0.3
Microsoft.EntityFrameworkCore.Tools 2.0.3
Pomelo.EntityFrameworkCore.MySql 2.0.1

要调用 MySql 中的存储过程,您可以使用以下内容:

var values = _context.Test.FromSql("call test_proc2(0)").ToList();

关于mysql - 在 .net core 和 pomelo 驱动程序上使用 EF Core 搭建 mysql 时缺少存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41595535/

相关文章:

mysql - 如何在 MySQL 中使用触发器创建审计跟踪或日志记录表

mysql - 从多行更新 Group_Concat

mysql - java.sql.SQLException : other error: request outdated while connecting to TIDB from Spark using mysql-connector-java 5. 1.6 连接器

java - Cascade 在 Hibernate 一对一映射中不起作用

c# - 存储过程 DateTime 'Parameter not found in the collection' 错误

c# - 从证书库导入的 X509 证书没有私钥

sql-server - 我是否必须使用存储过程来获得查询级别的安全性,或者我仍然可以使用 Dynamic Sql 来做到这一点?

mysql存储过程不一致地递增所有记录

msbuild - dotnet 发布命令未为 ASP.NET Core Web 应用程序项目创建 zip 文件包

sqlite - 使用 SQLite.Core 使用密码连接到数据库