[英]EF Core: detect table renaming
我必須通過添加基類來更改實體。 以前,我有這個:
public virtual DbSet<EmailRequest> RefundEmailRequests { get; set; }
public virtual DbSet<EmailRequestState> EmailRequestHistory { get; set; }
並更改為:
public virtual DbSet<Request> Requests { get; set; }
public virtual DbSet<RequestState> RequestHistory { get; set; }
建造者:
private void ConfigureRequest(EntityTypeBuilder<Request> builder)
{
builder.ToTable("Requests");
builder.HasKey(s => s.Id);
builder.HasMany(s => s.History)
.WithOne()
.HasForeignKey("RequestId")
.OnDelete(DeleteBehavior.Cascade);
builder.HasDiscriminator<string>("Type")
.HasValue<EmailRequest>(EmailRequest.Type)
.HasValue<ExternalRequest>(ExternalRequest.Type);
builder.Ignore(e => e.CurrentState);
}
private void ConfigureRequestState(EntityTypeBuilder<RequestState> builder)
{
builder.ToTable("RequestStates");
builder.Property<int>("Id")
.IsRequired();
builder.HasKey("Id");
builder.HasDiscriminator<string>("Type")
.HasValue<Domain.States.Request.Received>(Domain.States.Request.Received.Type)
.HasValue<Domain.States.Request.Processing>(Domain.States.Request.Processing.Type)
.HasValue<Domain.States.Request.Duplicate>(Domain.States.Request.Duplicate.Type)
.HasValue<Domain.States.Request.Rejected>(Domain.States.Request.Rejected.Type)
.HasValue<Domain.States.Request.FailedProcessing>(Domain.States.Request.FailedProcessing.Type)
.HasValue<Domain.States.Request.Processed>(Domain.States.Request.Processed.Type);
}
現在, EmailRequest
繼承自Request
(國家/地區的相同原則)
添加遷移時,我注意到EF檢測到重命名為RequestState
而不是Request。
migrationBuilder.DropTable(
name: "EmailRequests",
schema: "refunds");
migrationBuilder.RenameTable(
name: "EmailRequestStates",
schema: "refunds",
newName: "RequestStates");
怎么樣 ? 我該怎么做才能檢測到重命名?
EmailRequest
現在從Request
繼承
您不能將表重命名為現有表。 您需要復制已刪除的數據:
migrationBuilder.Sql(
@"
INSERT INTO Requests
SELECT * FROM refunds.EmailRequests;
");
migrationBuilder.DropTable(
name: "EmailRequests",
schema: "refunds");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.