微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

EntityFramework Core 3.1 + with MySql 或 Pomelo 重命名表以使用 DBFirst

如何解决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/

执行dbFirst时有没有可能强制不改变数据库表名?

我的连接器版本如下:

-对于柚子项目

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 举报,一经查实,本站将立刻删除。