Я создал несколько классов в C # с использованием подхода, основанного на базе данных, и в настоящее время я делаю рефакторинг этих классов, чтобы сделать имена более удобочитаемыми для человека.
Однако изменение имени свойства и применение оригинала вColumnAttribute
все еще вызывает миграцию.
Это, кажется, применимо, когда я переименовываю составные ключи, на которые ссылаются другие сущности / таблицы.
Например, изменив это:
[Key]
[Column("SCHED_NAME", Order = 0)]
[StringLength(120)]
public string SCHED_NAME { get; set; }
to:
[Key]
[Column("SCHED_NAME", Order = 0)]
[StringLength(120)]
public string SchedulerName { get; set; }
создает миграцию, подобную этой:
DropForeignKey("dbo.QRTZ_TRIGGERS", new[] { "SCHED_NAME", "JOB_NAME", "JOB_GROUP" }, "dbo.QRTZ_JOB_DETAILS");
CreateTable(
"dbo.QRTZ_TRIGGERS",
c => new
{
SCHED_NAME = c.String(nullable: false, maxLength: 120),
TRIGGER_NAME = c.String(nullable: false, maxLength: 150),
TRIGGER_GROUP = c.String(nullable: false, maxLength: 150),
JOB_NAME = c.String(nullable: false, maxLength: 150),
JOB_GROUP = c.String(nullable: false, maxLength: 150),
DESCRIPTION = c.String(maxLength: 250),
NEXT_FIRE_TIME = c.Long(),
PREV_FIRE_TIME = c.Long(),
PRIORITY = c.Int(),
TRIGGER_STATE = c.String(nullable: false, maxLength: 16),
TRIGGER_TYPE = c.String(nullable: false, maxLength: 8),
START_TIME = c.Long(nullable: false),
END_TIME = c.Long(),
CALENDAR_NAME = c.String(maxLength: 200),
MISFIRE_INSTR = c.Int(),
JOB_DATA = c.Binary(),
})
.PrimaryKey(t => new { t.SCHED_NAME, t.TRIGGER_NAME, t.TRIGGER_GROUP })
.ForeignKey("dbo.QRTZ_JOB_DETAILS", t => new { t.SCHED_NAME, t.JOB_NAME, t.JOB_GROUP });
CreateTable(
"dbo.QRTZ_JOB_DETAILS",
c => new
{
SCHED_NAME = c.String(nullable: false, maxLength: 120),
JOB_NAME = c.String(nullable: false, maxLength: 150),
JOB_GROUP = c.String(nullable: false, maxLength: 150),
DESCRIPTION = c.String(maxLength: 250),
JOB_CLASS_NAME = c.String(nullable: false, maxLength: 250),
IS_DURABLE = c.Boolean(nullable: false),
IS_NONCONCURRENT = c.Boolean(nullable: false),
IS_UPDATE_DATA = c.Boolean(nullable: false),
REQUESTS_RECOVERY = c.Boolean(nullable: false),
JOB_DATA = c.Binary(),
})
.PrimaryKey(t => new { t.SCHED_NAME, t.JOB_NAME, t.JOB_GROUP });
DropTable("dbo.QRTZ_TRIGGERS");
DropTable("dbo.QRTZ_JOB_DETAILS");
}
Оператор CreateTable
идентичен исходному.
Любойидеи, почему это происходит?