【发布时间】:2016-04-14 12:10:41
【问题描述】:
我是 ASP/EF 的新手。我在我的个人项目中使用 ASP 5 和 Entity Framework 7。
所以我可以使用代码优先的方法创建数据库和表,但所有表名都是单数的,默认情况下不会复数。
在我在 DBSet 下创建的 ServerMatrixDemoDB DbContext 文件中:
public class ServerMatrixDemoDB : DbContext
{
public ServerMatrixDemoDB()
{
Database.EnsureCreated();
}
public DbSet<Domain> Domains { get; set; }
public DbSet<Environment> Environments { get; set; }
public DbSet<Network> Networks { get; set; }
public DbSet<OsVersion> OsVersions { get; set; }
public DbSet<Tier> Tiers { get; set; }
public DbSet<Service> Services { get; set; }
public DbSet<HardwareType> HardwareTypes { get; set; }
public DbSet<Powershell> Powershell { get; set; }
public DbSet<DotNetVersion> DotNetVersions { get; set; }
public DbSet<Status> Status { get; set; }
public DbSet<Servers> Servers { get; set; }
public DbSet<Application> Applications { get; set; }
}
在我的 startup.cs 文件中,我使用以下代码:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc() // Add MVC Dependency.
.AddJsonOptions(
opt =>
{
opt.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); // Api convert all property names to CamelCase.
}
);
services.AddLogging(); // Enable Logging for database errors.
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<ServerMatrixDemoDB>(options =>
{
options.UseSqlServer(@"Server=.\SQLEXPRESS;user id=sa;password='passwrd';Database=ServerMatrixDemoDB;integrated security=True;");
});
services.AddTransient<ServerMatrixDemoSeedData>();
}
一旦我构建并运行项目,就会创建一个数据库和表,但所有表名都是单数。有没有办法在代码优先的方法中复数表名?
【问题讨论】:
-
我刚试过这个,我的表是以它们的 DbSet 名称命名的。我有没有 DbSet 的实体,它们最终是单数的。当我将它们作为具有复数名称的 DbSet 放入时,它在迁移中被拾取,因为表名称从单数变为复数。也许自从问题发布以来这已经发生了变化?
标签: c# asp.net entity-framework entity-framework-core