Specifying the Kind on DateTime
_DateCreated = value;
        _DateCreated = DateTime.SpecifyKind(_DateCreated, DateTimeKind.Utc);//ensure this is set


This creates a race condition: another thread can access _DateCreated in between the two assignments and get a non-UTC value. If you're going to do it at this level it should be

        _DateCreated = DateTime.SpecifyKind(value, DateTimeKind.Utc);


That leaves the question of whether it should be done at this level. You haven't said how you're getting the date from the database. Can that be configured?




  This would have me questioning the use of DateTime in any scenario - and always using DateTimeOffset!?!


Yes. DateTime is one of those mistakes that everyone recognises is a mistake, but is so deeply embedded in so many libraries and tools that it's a pain in the neck to eradicate.