я получил довольно та же проблема в этом вопросе: How to override SQL Server default value constraint on a boolean when inserting new entity? [closed]Как установить другое значение в булевом значении defaut с ядром Entity Framework?
Подобно ему, я получаю хорошее значение моего булево от клиента к контроллеру, ложной, но она установлена истина по зову _context.SaveChanges();
из-за Entity Framework и ограничение по умолчанию в базе данных.
НО: Я использую Entity Framework Core и у меня нет [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
аннотации для устранения проблемы.
В моем ApplicationDbContext.cs:
modelBuilder.Entity<myEntity>(entity =>
{
entity.Property(e => e.Active).HasDefaultValueSql("1");
//entity.Property(e => e.Active).HasDefaultValueSql<bool>("1"); // doesn't fix
...
}
В моей базе данных:
CREATE TABLE myEntity(
Id INTEGER IDENTITY(1,1) NOT NULL,
...
Active BIT NOT NULL CONSTRAINT DF_myEntity_Active DEFAULT 1
);
В моем контроллере:
[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
}
...
}
кажется, что EF не отображает C# булева с SQL правильно и всегда принимает значение по умолчанию. У кого-то есть проблема, чтобы заставить ложное значение?
Вы когда-нибудь выяснили, как это исправить? У меня такая же проблема с использованием EF Core, и мне не удалось выяснить, как установить значение, отличное от значения по умолчанию 1 – monica