Ich habe das ganz gleiche Problem in dieser Frage: How to override SQL Server default value constraint on a boolean when inserting new entity? [closed]Wie wird ein anderer Wert für einen Booleschen Wert mit dem Standardwert default mit Entity Framework Core festgelegt?
Wie er, ich den guten Wert meiner boolean vom Client an den Controller, falsch, aber es ist zu wahren durch den Aufruf von _context.SaveChanges();
eingestellt wegen Entity Framework und die Vorgabewerteinschränkung in der Datenbank.
ABER: Ich benutze Entity Framework Core und ich habe keine [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
Annotation zu entfernen, um das Problem zu beheben.
In meinem ApplicationDbContext.cs:
modelBuilder.Entity<myEntity>(entity =>
{
entity.Property(e => e.Active).HasDefaultValueSql("1");
//entity.Property(e => e.Active).HasDefaultValueSql<bool>("1"); // doesn't fix
...
}
In meiner Datenbank:
CREATE TABLE myEntity(
Id INTEGER IDENTITY(1,1) NOT NULL,
...
Active BIT NOT NULL CONSTRAINT DF_myEntity_Active DEFAULT 1
);
In meinem Controller:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("Id, Active, etc.")] Entity myEntity)
{
if (ModelState.IsValid)
{
_context.Add(myEntity); // here myEntity.Active = false
await _context.SaveChangesAsync();
// same problem with _context.SaveChanges(); in another controller
// here myEntity.Active = true
}
...
}
Es scheint, dass EF nicht C# boolean abbildet mit SQL-Bit korrekt und nimmt immer den Standardwert. Hat jemand ein Problem, um den falschen Wert zu erzwingen?
Haben Sie jemals herausgefunden, wie Sie das beheben können? Ich habe das gleiche Problem mit EF Core und konnte nicht herausfinden, wie Sie einen anderen Wert als den Standardwert 1 festlegen – monica