I have alluded to this issue in my other question, but i think it\'s worthwhile breaking it out into its own question, as it\'s not really dependant on the other scenarios i
Mark all your setters as internal, then add the InternalsVisibleTo Attribute to your POCOs assembly:
[assembly: InternalsVisibleTo( "MyCompany.MyProject.Repositories" )]