Two-tier applications separate the presentation layer and the data layer, and all database access related objects are located in the data-tier.
When the application runs, the config file of the main project is read. In web applications, it is the web.config, in console applications the app.config file.
When you get the following runtime exception
Exception thrown: ‘System.InvalidOperationException’ in EntityFramework.dll
An exception of type ‘System.InvalidOperationException’ occurred in EntityFramework.dll but was not handled in user code
No connection string named ‘…Entities’ could be found in the application config file.
- Copy the connection string from the app.config file of the data-tier to the main project’s config file.
<add name="USC_SocialMediaMSSQLEntities" connectionString="metadata=res://*/USC_SocialMedia_MSSQL.csdl|res://*/USC_SocialMedia_MSSQL.ssdl|res://*/USC_SocialMedia_MSSQL.msl;provider=System.Data.SqlClient;provider connection string="data source=MY_SERVER;initial catalog=MY_DATABASE;user id=MY_USER;password=MY_PASWORD;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
2. This is a sample data access class in the data-layer to read data from the aspNetRoles table.
using System.Data.Entity; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SocialMedia_Data { public class SocialMediaData { private USC_SocialMediaMSSQLEntities _web; public SocialMediaData() { // Set up the database connections _web = new USC_SocialMediaMSSQLEntities(); } /// Returns the list of Roles public List GetRoles() { IEnumerable foundRoles = from aspNetRoles in _web.AspNetRoles orderby aspNetRoles.DisplayOrder select aspNetRoles; if (null == foundRoles || 0 == foundRoles.Count()) { return null; } return foundRoles.ToList(); } } }