La risposta accettata è corretta, basta aggiornare con la soluzione EF Core; (anche la mia soluzione si concentra sulla modifica del valore predefinito, anziché crearla correttamente la prima volta)
Non esiste ancora un attributo di dati.
E si deve ancora utilizzare l'API Fluent; esso ha un HasDefaultValue
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>()
.Property(b => b.Rating)
.HasDefaultValue(3);
}
Nota, c'è anche HasDefaultValueSql
per caso NULL:
.HasDefaultValueSql("NULL");
E si può anche utilizzare le Migrazioni Up
e Down
metodi, è possibile modificare la defaultValue
o defaultValueSql
ma si potrebbe essere necessario eliminare prima gli indici. Ecco un esempio:
public partial class RemovingDefaultToZeroPlantIdManualChange : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropIndex(
name: "IX_TABLE_NAME_COLUMN_NAME",
table: "TABLE_NAME"
);
migrationBuilder.AlterColumn<int>(
name: "COLUMN_NAME",
table: "TABLE_NAME",
nullable: true,
//note here, in the Up method, I'm specifying a new defaultValue:
defaultValueSql: "NULL",
oldClrType: typeof(int));
migrationBuilder.CreateIndex(
name: "IX_TABLE_NAME_COLUMN_NAME",
table: "TABLE_NAME",
column: "COLUMN_NAME"
);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropIndex(
name: "IX_TABLE_NAME_COLUMN_NAME",
table: "TABLE_NAME"
);
migrationBuilder.AlterColumn<int>(
name: "COLUMN_NAME",
table: "TABLE_NAME",
nullable: true,
//note here, in the Down method, I'll restore to the old defaultValue:
defaultValueSql: "0",
oldClrType: typeof(int));
migrationBuilder.CreateIndex(
name: "IX_TABLE_NAME_COLUMN_NAME",
table: "TABLE_NAME",
column: "COLUMN_NAME"
);
}
}
fonte
2017-06-01 01:40:36
Grande, grazie, per ora ci vado con questo. – Carl
Prego;) –