0

我已经完成了两个测试项目,一个使用 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

我的数据库中有如下表:brand_cars 和执行 dbFirst 进程时。它把我的名字改成了 BrandCars。

在 SQLServer 中存在参数 -UseDatabaseNames,但在 mysql 中我没有找到它

在连接器选项中我没有找到这个选项。 https://mysqlconnector.net/connection-options/

执行 dbFirst 时是否有可能强制您不更改​​数据库表的名称?

我的连接器版本如下:

-Pomelo 项目

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

4

1 回答 1

1

在其(或每晚构建)版本中使用Pomelo.EntityFrameworkCore.MySql对我来说效果很好。5.0.0-alpha.2

我使用以下 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 以任何方式更改数据库表名,您还应该--no-pluralize--use-database-names.

于 2021-03-08T20:15:02.620 回答