EF Core 2.0 中的 EnglishPluralizationService 在哪里?

moh*_*eli 4 c# entity-framework pluralize entity-framework-core

EF Core 2.0 仍然有它的约定,它可以将复数变为单数,也可以将单数变为复数。因此,它肯定内置了多元化服务。

但是我找不到这个服务来将它用于其他目的。

在 EF 6 中,我会这样写:

using System.Data.Entity.Infrastructure.Pluralization;

// Then somewhere in code
var englishPluralizationService = new EnglishPluralizationService();
var singularCat = englishPluralizationService.Singularize("Cats");
Run Code Online (Sandbox Code Playgroud)

Iva*_*oev 7

EF Core 2.0 仍然有它的约定,它可以将复数变为单数,也可以将单数变为复数。因此,它肯定内置了多元化服务。

不,它不能这样做,也没有集成的多元化服务。

如文档的表映射部分所述,它使用一个简单的约定:

按照惯例,每个实体将被设置为映射到一个与DbSet<TEntity>在派生上下文中公开实体的属性同名的表。如果DbSet<TEntity>给定实体没有包含,则使用类名。

EF核心2.0引入了IPluralizer服务 用来singularize实体类型名称和以复数DbSet名脚手架过程中,但作为链接声明

这只是一个钩子,人们可以轻松地插入他们自己的复数词

矮个子,没有这样的服务。对于“其他需求”,您必须使用自己的或第 3 方复数词。


Eri*_*kEJ 5

EF Core 中没有内置复数形式,但您可以挂入例如 Inflector 包:https ://www.nuget.org/packages/Inflector/

我在“EF Core Power Tools”中这样做 -有关更多信息,请参见https://github.com/aspnet/EntityFrameworkCore/commit/dda3f43c046c2464f4813fdbb4261a6146aa4432