我正在尝试针对 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/