我在EF中有一些模型和表,你可以在这里看到其中之一:
现在当我想要从模型生成数据库时,它会在生成的SQL语句中将表名添加's':
CREATE TABLE [dbo].[Options] (
[Id] int IDENTITY(1,1) NOT NULL,
[Name] nvarchar(50) NOT NULL,
[Price] int NOT NULL
);
我还禁用了名字的复数形式,但没有改变任何内容:
这会在部署 Web 应用程序时导致错误。如何防止复数形式?
我在EF中有一些模型和表,你可以在这里看到其中之一:
现在当我想要从模型生成数据库时,它会在生成的SQL语句中将表名添加's':
CREATE TABLE [dbo].[Options] (
[Id] int IDENTITY(1,1) NOT NULL,
[Name] nvarchar(50) NOT NULL,
[Price] int NOT NULL
);
我还禁用了名字的复数形式,但没有改变任何内容:
这会在部署 Web 应用程序时导致错误。如何防止复数形式?
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
它将删除默认附加到所有模型生成器的复数规则。
您还需要添加命名空间。
System.Data.Entity.ModelConfiguration.Conventions;
希望这个能帮到您
DbModelBuilder
。 - Majidusing System.Data.Entity
。 - Travis J似乎只有使用Code First才能禁用复数形式功能。 这就是为什么以下代码无法工作的原因:
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
试试这个,也许会有好运:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Option>().ToTable("Option")
}