Невозможно удалить столбецC#

Место общения программистов C#
Ответить
Anonymous
 Невозможно удалить столбец

Сообщение Anonymous »

Я удалил столбец из класса модели, но EF Core не распознал, что он был удален. Я признаю, что одновременно вношу много других изменений в модель, но не понимаю, что я сделал, чтобы рассинхронизировать ситуацию.
Столбец, о котором идет речь. является PdfTemplateId в моей сущности.

Код: Выделить всё

public class Company : ISoftDelete
{
public int Id { get; set; }

[Required]
[StringLength(120)]
public string Name { get; set; }

[Display(Name = "Company Code")]
[Required]
[StringLength(80)]
public string CompanyCode { get; set; }

//[Display(Name = "Default PDF Template")]
//public int PdfTemplateId { get; set; }
//public PdfTemplate PdfTemplate { get; set; }

// Additional code...

}

public class CompanyConfiguration : IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder builder)
{
builder.HasMany(c => c.Facilities)
.WithOne(f => f.Company)
.OnDelete(DeleteBehavior.NoAction);
builder.HasMany(c => c.Products)
.WithOne(p => p.Company)
.OnDelete(DeleteBehavior.NoAction);
builder.HasMany(c => c.Customers)
.WithOne(c => c.Company)
.OnDelete(DeleteBehavior.NoAction);
}
}
Но свойство остается.
Изображение

Когда я выполняю новую добавленную миграцию, никаких изменений не происходит. Ниже приведена часть моего ApplicationDbContextModelSnapshot.

Код: Выделить всё

modelBuilder.Entity("PegasusEntities.Models.Company", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");

SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));

b.Property("CompanyCode")
.IsRequired()
.HasMaxLength(80)
.HasColumnType("nvarchar(80)");

b.Property("DeletedOnUtc")
.HasColumnType("datetime2");

b.Property("IsDeleted")
.HasColumnType("bit");

b.Property("IsLimited")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
.HasDefaultValue(false);

b.Property("Name")
.IsRequired()
.HasMaxLength(120)
.HasColumnType("nvarchar(120)");

b.Property("PdfTemplateId")
.HasColumnType("int");

b.HasKey("Id");

b.HasIndex("PdfTemplateId");

b.ToTable("Companies", (string)null);
});
Я попробовал раскомментировать удаленный столбец, добавить миграцию, затем снова удалить его и добавить еще одну миграцию.
К сожалению, я не получаю DropColumn во второй миграции. Вместо этого я получаю следующую миграцию.

Код: Выделить всё

protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_Companies_PdfTemplates_PdfTemplateId",
table: "Companies");

migrationBuilder.AlterColumn(
name: "PdfTemplateId",
table: "Companies",
type: "int",
nullable: true,
oldClrType: typeof(int),
oldType: "int");

migrationBuilder.AddForeignKey(
name: "FK_Companies_PdfTemplates_PdfTemplateId",
table: "Companies",
column: "PdfTemplateId",
principalTable: "PdfTemplates",
principalColumn: "Id");
}
К сожалению, я не знаю, как устранить эту неполадку и снова синхронизировать данные.

Подробнее здесь: https://stackoverflow.com/questions/791 ... ove-column
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»