Bene, ho provato ad implementare l'annotazione personalizzata per EF 6 proprio come spiegato in un tutorial di Milinaudara in quanto è il primo hit di google che ho trovato. Il tutorial è praticamente facile da seguire. Ma sembra che avrò bisogno di aggiungere [CaseSensitive]
su una colonna dopo che ho eseguito la prima migrazione - la creazione della tabella - e [CaseSensitive]
verrà effettivamente eseguito in una seconda migrazione come operazione di tabella [CaseSensitive]
. Ho sbagliato? Perché è quello che ho vissuto finora ..
È possibile che quell'annotazione venga eseguita alla creazione di una tabella? Devo sovrascrivere il metodo EF Generate(CreateTableOperation createTableOperation)
per garantire che l'annotazione [CaseSensitive]
effettivamente applicata?
Generate(AlterColumnOperation alterColumnOperation)
stato chiamato solo quando il modello è cambiato e non è mai stato licenziato sulla creazione di una tabella o aggiungendo una nuova colonna - forse questo è abbastanza ovvio ma il tutorial non ne ha parlato .. almeno una storia di base su ciascun metodo sarà migliore .. Generate(AddColumnOperation addColumnOperation)
per sovrascrivere Generate(AddColumnOperation addColumnOperation)
e Generate(CreateTableOperation createTableOperation)
modo che assomigli:
protected override void Generate(AddColumnOperation addColumnOperation)
{
//add the column
base.Generate(addColumnOperation);
//alter the column
this.Generate(new AlterColumnOperation(addColumnOperation.Table, addColumnOperation.Column, false));
}
protected override void Generate(CreateTableOperation createTableOperation)
{
//add the column
base.Generate(createTableOperation);
//alter the column
foreach(ColumnModel column in createTableOperation.Columns)
{
this.Generate(new AlterColumnOperation(createTableOperation.Name, column, false));
}
}
Anche se so che non dovremmo mai presumere che ogni operazione di modifica sia sicura ... quindi passare false
quando si costruisce AlterColumnOperation
potrebbe essere una cattiva idea.