2023年更新:对于现代EF Core版本(.NET 5+),复数形式默认启用,如https://dev59.com/zFsW5IYBdhLWcg3w0aDM#64801660中所示。尽管当时的讨论非常相关,但其余部分只是历史。
原始问题:
我在Package Manager Console
中使用Scaffold-DbContext
命令为现有的SQL Server数据库创建和重新创建上下文和实体:
Scaffold-DbContext -provider EntityFramework.MicrosoftSqlServer -connection "my connection string"
它完美地运行,除了一件事:
DbSet
的属性名称是单数形式:public partial class MyDbContext : DbContext
{
public virtual DbSet<Request> Request { get; set; }
public virtual DbSet<RequestHeader> RequestHeader { get; set; }
}
我更喜欢这些名称以复数形式出现(例如Requests
)。除了网络搜索,我还检查了命令语法:
get-Help Scaffold-DbContext -detailed
并未找到任何更改此行为的方法。这是我的packages.config
文件:
<packages>
<package id="EntityFramework.Commands" version="7.0.0-rc1-final" targetFramework="net46" />
<package id="EntityFramework.Core" version="7.0.0-rc1-final" targetFramework="net46" />
...
</packages>
如何在生成代码时将
DbSet
名称转换为复数形式?
更新 2017-04:在 Entity Framework Core 1.1 中,现在可以对数据库先有的表进行生成代码,并且可以将其转换为复数形式。请参阅下面 答案 以获取更多详细信息。
IDesignTimeServices
技巧已经被广泛应用。请参考我的回答 =) https://dev59.com/zFsW5IYBdhLWcg3w0aDM#43320867 - Ilya Chumakov