У меня есть проект, который я перехожу из .NET 4.5 в .NET Core, по какой-то причине (я не могу вспомнить), я хотел предотвратить множественное использование имен таблиц, когда я запустил update-database
какИтак (.NET 4.5):
public class UncoveredLink : DbContext
{
//removed constructor for brevity
public DbSet<Album> Albums { get; set; }
public DbSet<Artist> Artists { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//the line I'm talking about is here
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
Итак, когда я смотрю на свою базу данных в SQL Management Studio, я вижу следующее:
//what I see
dbo.Album
dbo.Artist
//what i want
dbo.Albums
dbo.Artists
Я считаю, что отсутствие плюрализации - вот чтовызывает эту ошибку при попытке загрузить страницу:
SqlException: Invalid object name 'Albums'.
//further down the stack trace i see
UnLink.Services.AlbumService.GetAlbumByStringExt(string stringExt) in AlbumService.cs
album = _db.Albums.Where(x => x.StringExt == stringExt).FirstOrDefault();
Видите?Я пытаюсь позвонить _db.Albums
, но считаю, что не могу этого сделать, потому что таблица не является плюрализированной, а мой базовый контекст не имеет плюрализации OnModelCreating
, как в моем .NET 4.5 (кажется, не могу добавитьЭто).
Мой новый DbContext в .NET Core 2.2 выглядит следующим образом:
public class ApplicationDbContext : IdentityDbContext
{
public DbSet<Album> Albums { get; set; }
public DbSet<Artist> Artists { get; set; }
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
}
Как мне обновить имена таблиц?Таблицы в моем базовом DbContext (как показано выше) уже являются множественными, поэтому я не могу внести изменения в DbContext, которые будут отслеживаться для нового add-migration
... я просто вручную создаю файл миграции и обновляю таблицутакие имена, как:
migrationBuilder.RenameTable(name: "Artist", schema: "dbo", newName: "Artists", newSchema: "dbo");
Я думал, что не стоит создавать миграцию для чего-то, что на самом деле не было изменено / отслежено в коде?