I am using ADO.Net Enity Framework 4.0 in my current sample learning project (WCF REST Service Application) and I am also using POCO entities to map objects that are in Entity Model.
As I am working with N-tier architecture, I am having my POCO entities, Entity Model and my executable service page(start up page) in separate projects. My ObjectContext class (for mapping entities in entity model and POCO entities) is in project with POCO entities.
Issue :
Now as I tried to run my service project and navigate to “http://localhost/PronerveEPMS/PronerveRestService/Accounts” for getting all “Accounts” in my database, my code raised the Exception “The specified named connection is either not found in the configuration, not intended to be used with the EntityClient provider, or not valid.”. See the figure below……..
Click the image for full view
Solution :
Now the issue was my connection string of Entity Model was in app.config file(by default) with Entity Model and so when I was executing my service project it used to search connection string in web.config file of service project and so not found it.
And so as a solution i just put my default connection string of Entity Model in web.config of service project and also need to add reference of the project containing Entity Model in executable service project.
ok, now searching for the solution to this issue I found that many developers were searching for the exact connection string to use with entity model and so here is my connection string….
<add name="pronerveEntities"
connectionString="metadata=res://pronerve.data.sql/pronerve.csdl|
res://pronerve.data.sql/pronerve.ssdl|
res://pronerve.data.sql/pronerve.msl;
provider=System.Data.SqlClient;
provider connection string=’Data Source=NIKHILTHAKER-PC;
Initial Catalog=pronerve;
User ID=sa;
Password=xyz;
MultipleActiveResultSets=True’;”
providerName=”System.Data.EntityClient” />
Here “metadata” part of the connection string points to the auto generated csdl, ssdl, msl files which contains the schema and other information about the database used by Entity Model.
Second thing is ‘pronerve.data.sql’ (bold sections in connection string), which is the name of my project that contains Entity Model, can be replaced by simple ‘*’ but it is always reccomended that you always use the proper assembly name in such scenarios. For more details on this, just go to here… http://msdn.microsoft.com/en-us/library/cc716756.aspx
For more on ADO.Net Entity Framework please go to, http://msdn.microsoft.com/en-us/data/aa937723.aspx
I will also talk more about POCO entities in .Net 4.0 in some other blog.