EF не отменяет вашу внутреннюю логику. EF только оборачивает это, и свойства обертки все еще вызывают базовый установщик и получатель.
Edit:
Не существует способа избежать этого. Просто вы привносите некоторую логику в свои сущности и несете за нее ответственность. Сеттер также вызывается при загрузке сущности из базы данных, потому что он должен устанавливать ваши свойства. Если вы не хотите, чтобы ваша логика выполнялась при загрузке сущности из базы данных, вы должны добавить некоторую другую логику, которая включит проверку после загрузки объекта. Чтобы включить проверку вы можете обработать:
var objectContext = ((IObjectContextAdapter)dbContext).ObjectContext;
objectContext.ObjectMaterialized += YourHandler
В обработчике ObjectMaterialzied
вам нужно проверить тип материализованного объекта и преобразовать его в тип, выставляющий вашу функцию TurnOn, и просто вызвать его.