Я читал похожие темы, и они предлагают удалить папку миграции и удалить базу данных. Проблема в том, что это производственная база данных. Трудно поверить, что вам нужно удалить и заново заполнить производственную базу данных, чтобы внести изменения.
Итак, у меня есть приложение Asp. Net MVC, ориентированное на Core 3.1, которое называется CompanyPortal.Web. есть библиотека классов под названием CompanyIdentity.DAL
Идентификация установлена в dll.
Я расширил IdentityUser:
namespace CompanyIdentity.DAL.Data
{
public class CompanyPortalUser: IdentityUser
{
public string CoreUserId { get; set; }
}
}
Пока существует только одна миграция, исходный: 20200711193329_InitialDbCreation.cs
Я пытаюсь изменить тип данных CoreUserId и добавить пару полей:
namespace CompanyIdentity.DAL.Data
{
public class CompanyPortalUser: IdentityUser
{
public int CoreUserId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
}
Я получаю сообщение об ошибке, когда использую команду: Update- База данных
Я считаю, что это весь код, связанный с этим:
namespace CompanyIdentity.DAL.Data
{
public class CompanyIdentityDbContext: IdentityDbContext<CompanyPortalUser>
{
public CompanyIdentityDbContext(DbContextOptions<CompanyIdentityDbContext> options): base(options)
{
}
}
}
namespace CompanyIdentity.DAL.Migrations
{
public partial class AddedToCompanyPortalUser : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<int>(
name: "CoreUserId",
table: "AspNetUsers",
nullable: false,
oldClrType: typeof(string),
oldType: "nvarchar(max)",
oldNullable: true);
migrationBuilder.AddColumn<string>(
name: "FirstName",
table: "AspNetUsers",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "LastName",
table: "AspNetUsers",
nullable: true);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "FirstName",
table: "AspNetUsers");
migrationBuilder.DropColumn(
name: "LastName",
table: "AspNetUsers");
migrationBuilder.AlterColumn<string>(
name: "CoreUserId",
table: "AspNetUsers",
type: "nvarchar(max)",
nullable: true,
oldClrType: typeof(int));
}
}
}
Вот соответствующие биты из Starup.cs ConfigureServices ():
services.AddDbContext<CompanyIdentityDbContext>(config =>
{
config.UseSqlServer(_configuration.GetConnectionString("CompanyIdentityDb"));
});
services.AddIdentity<CompanyPortalUser, IdentityRole>()
.AddDefaultTokenProviders()
.AddEntityFrameworkStores<CompanyIdentityDbContext>();
Я не понимаю, почему он вообще пытается создавать таблицы? Разве он не должен просто попытаться выполнить мою последнюю миграцию?
У меня CompanyPortal.Web установлен как Startup Project. У меня также есть проект по умолчанию в консоли диспетчера пакетов, установленный на: CompanyIdentity.DAL
Еще один бит информации. Это решение содержит два веб-приложения: CompanyPortal.Web и CustomerPortal.Web. Оно также содержит две библиотеки классов, по одной для каждого уровня идентификации: CompanyIdentity.DAL и CustomerIdentity.DAL. Не уверен, что я должен указать что-то еще в базе данных обновления. команду из-за этого.