It depends, when do you have enough data to check the correctness: If the correctness of FileExtension does not depend on the value of Title, and the correctness of Title does not depend on the value of FileExtension, you can check each of them inside the setters.
But if one of them depends on the other's value, and you don't know what is the order in which setters will be executed, you have to check Title and FileExtension only when you get them both. That can be in Save, or in some new Check method.
Also, maybe before doing Save you have to check, whether both Title and FileExtenstion were set.
So, to summarize, you may need the following checks:
- Check Title's correctness: in Title.set
- Check FileExtension's correctness: in FileExtension.set
- Check that Title.set and FileExtension.set were executed: in Save
- Check the "co-correcntess" of Title and FileExtesion: in Save
Regarding the Update method: I understand that you receive a Photo object with Title and FileExtenstion already set. In this case, you have to decide, whether you trust that Title and FileExtension were already checked in the Photo by whoever did set them. If you trust it, you don't have to change anything in my proposal above. But if you don't trust, then you also have to check Title's correctness and FileExtension's correctness in Save (or, again, in some new Check method).