First try to understand how Entity Framework Connection string works then you will get idea of what is wrong.
- You have two different models, Entity and ModEntity
- This means you have two different contexts, each context has its own Storage Model, Conceptual Model and mapping between both.
- You have simply combined strings, but how does Entity's context will know that it has to pickup entity.csdl and ModEntity will pickup modentity.csdl? Well someone could write some intelligent code but I dont think that is primary role of EF development team.
- Also machine.config is bad idea.
- If web apps are moved to different machine, or to shared hosting environment or for maintenance purpose it can lead to problems.
- Everybody will be able to access it, you are making it insecure. If anyone can deploy a web app or any .NET app on server, they get full access to your connection string including your sensitive password information.
Another alternative is, you can create your own constructor for your context and pass your own connection string and you can write some if condition etc to load defaults from web.config
Better thing would be to do is, leave connection strings as it is, give your application pool an identity that will have access to your database server and do not include username and password inside connection string.