如何解决EntityFramework Core 3.1 + with MySql 或 Pomelo 重命名表以使用 DBFirst
我做过两个测试项目,一个是 MysqL.EntityFramworkCore,另一个是 Pomelo.EntityFrameworkCore,在这两个项目中,我从数据库中获取模型时发生了同样的事情。
1.- Scaffold-DbContext 'server = x.x.x.x.x; user = xxxx; password = xxxx; database = name;' MysqL.EntityFrameworkCore -OutputDir Models -f
2.- Scaffold-DbContext 'server = x.x.x.x.x; user = xxxx; password = xxxx; database = name;' Pomelo.EntityFrameworkCore.MysqL -OutputDir Models -f
我的数据库中有如下表: 品牌_汽车 以及在执行 dbFirst 过程时。 它把我的名字改成了 BrandCars。
在 sqlServer 中存在参数 -UseDatabaseNames,但在 MysqL 中我没有找到它
在连接器选项中我没有找到这个选项。 https://mysqlconnector.net/connection-options/
我的连接器版本如下:
-对于柚子项目
Microsoft.EntityFrameworkCore.Tools 3.1.12
Pomelo.EntityFrameworkCore.MysqL 3.2.4
Pomelo.EntityFrameworkCore.MysqL.Design 1.1.2
-用于 MysqL 项目
Microsoft.EntityFrameworkCore.Design 5.0.3
Microsoft.EntityFrameworkCore.Tools 5.0.3
MysqL.EntityFrameworkCore 5.0.0
解决方法
在 5.0.0-alpha.2
(或 Pomelo.EntityFrameworkCore.MySql)版本中使用 nightly build 对我来说效果很好。
我使用以下 SQL 对其进行了测试:
drop database if exists `So66530902`;
create database `So66530902`;
use `So66530902`;
CREATE TABLE `ice_creams` (
`IceCreamId` int NOT NULL AUTO_INCREMENT,`Name` longtext CHARACTER SET utf8mb4 NULL,CONSTRAINT `PK_IceCreams` PRIMARY KEY (`IceCreamId`)
);
然后我使用 --use-database-names
参数执行了以下命令:
dotnet ef dbcontext scaffold "server=127.0.0.1;uid=root;pwd=;port=3308;database=So66530902" Pomelo.EntityFrameworkCore.MySql -c Context -o Models --use-database-names
结果是以下类:
using System;
using System.Collections.Generic;
#nullable disable
namespace IssueConsoleTemplate.Models
{
public partial class ice_cream
{
public int IceCreamId { get; set; }
public string Name { get; set; }
}
}
需要说明的是,如果您不希望 EF Core 以任何方式更改数据库表名,您还应该在 {{1} 之外添加 --no-pluralize
标志}}。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。