I am struggling with pure implementation of Aggregate root with Entity Framework Code First. Suppose we have a standard problem of Order and OrderItem, the latter being the child of the former. We need to have a read only collection of OrderItem items in Order class so we can (by design) control the Adding, Removing or Updating of OrderItems in it's aggregate root (ie Order class).
How do we implement this list of OrderItem(s)? This list needs to be read-only so that other developers don't try adding OrderItem(s) inside the list by hand, avoiding methods that should be used instead.
How do we map that collection in EF Code First? Private properties are not mappable.