Было бы лучше использовать свойство, которое описывают другие ответы.В вашей базе данных не должно быть столбца для IsActive, так как его можно легко рассчитать.При этом, если вам нужно обрабатывать обновления в вашей БД, как вы просите, вам понадобится что-то вроде следующего:
Вы должны не делать это из ваших действий, как это будетзадержать ответ клиенту, вероятнее время ожидания и потреблять ресурсы.
Вероятно, вам нужен планировщик, который выполняет обновления БД во время работы вашего основного приложения .net.Поскольку вы не можете полагаться на то, что это происходит постоянно, вам также потребуется обрабатывать их при запуске.
Рассмотрите планировщик, подобный этому - Hangfire - FluentScheduler
Определите эту функцию:
void UpdateActiveInDatabase(MyDbContext myDb){
var models = myDb.myModels.Where(model => !model.IsActive && model.StartDate <= DateTime.UtcNow); //These models should be active
foreach(var model in models) { model.IsActive = true; }
myDb.SaveChanges();
}
Затем, когда ваше приложение запустится:
var myDb = GetMyDb(); // Get a DbContext instance from your DI somewhere
UpdateActiveInDatabase();
var models = myDb.myModels.Where(model => model.StartDate > DateTime.UtcNow); //These models need to be updated in the future
foreach(var model in models){
// Dependent on the scheduler you pick. Will need to get a DbContext from your DI and call UpdateActiveInDatabase(myDb);
}
И каждый раз, когда в вашей таблице происходит обновление сущностей, вытакже необходимо UpdateActiveInDatabase(myDb);