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)
EF Core 2.0 仍然有它的约定,它可以将复数变为单数,也可以将单数变为复数。因此,它肯定内置了多元化服务。
不,它不能这样做,也没有集成的多元化服务。
如文档的表映射部分所述,它使用一个简单的约定:
按照惯例,每个实体将被设置为映射到一个与
DbSet<TEntity>
在派生上下文中公开实体的属性同名的表。如果DbSet<TEntity>
给定实体没有包含,则使用类名。
EF核心2.0引入了IPluralizer
服务 用来singularize实体类型名称和以复数DbSet名脚手架过程中,但作为链接声明
这只是一个钩子,人们可以轻松地插入他们自己的复数词
矮个子,没有这样的服务。对于“其他需求”,您必须使用自己的或第 3 方复数词。
EF Core 中没有内置复数形式,但您可以挂入例如 Inflector 包:https ://www.nuget.org/packages/Inflector/
我在“EF Core Power Tools”中这样做 -有关更多信息,请参见https://github.com/aspnet/EntityFrameworkCore/commit/dda3f43c046c2464f4813fdbb4261a6146aa4432