You don't have factory classes for your derived entity classes? Because these should be used to create a new instance of a given type. (imho), as these are also used to create new instances when fetching a collection of entities.
So the factory calls the protected friend (internal) constructor, while a developer can't do that and has to use the factory for example:
Dim newGLMoneyWithdrawal As GLMoneyWithdrawal
newGLMoneyWithdrawal = GLMoneyWithdrawalFactory.Create()
And GLMoneyWithdrawalFactory is a subclass of GLMoneyWithdrawalEntityFactory. So when you do:
Dim withdrawals As New EntityFactory(New GLMoneyWithdrawalFactory())
adapter.FetchEntityCollection(withdrawals, Nothing)
you'll get the proper classes with the proper initialization.