MUST: mark Scalar Properties as virtual to enable improved Change Tracking (by going from Snapshot CT to Proxy POCO Change Tracking, which is based on IPOCO/IEntityWithChangeTracker).
MUST: mark Collection Navigation Properties as virtual to enable lazy loading.
MUST: Navigation Collection properties must implement ICollection<Entities>
SHOULD: As we are working with proxies, can use private set for Id, etc:
CONSIDER: For properties that need to ignored:
CONSIDER: For derived calculated properties that need to be saved, use empty sets: