I have created a database first mvc project that gave me a default connection string in my web.config file.
<add name="name" connectionString="metadata=res://*/Models.Model1.csdl|res://*/Models.Model1.ssdl|res://*/Models.Model1.msl;provider=System.Data.SqlClient;provider connection string="data source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\BETADB.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
Now I need to connect my project to the server database. Connection string:
<add name="name" connectionString="Server=tcp:*******,1433;Database=******;User ID=******;Password=******;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;MultipleActiveResultSets=true" providerName="System.Data.SqlClient" />
When I change the connection string and run I get the following error:
Code generated using the T4 templates for Database First and Model First development may not work correctly if used in Code First mode. To continue using Database First or Model First ensure that the Entity Framework connection string is specified in the config file of executing application. To use these classes, that were generated from Database First or Model First, with Code First add any additional configuration using attributes or the DbModelBuilder API and then remove the code that throws this exception.
Replace the original connection string you had under 'provider connection string' with the new one from the server:
<add name="name" connectionString="metadata=res://*/Models.Model1.csdl|res://*/Models.Model1.ssdl|res://*/Models.Model1.msl;provider=System.Data.SqlClient;provider connection string="(your connection string here)"" providerName="System.Data.EntityClient" />
Resulting in this connection string:
<add name="name" connectionString="metadata=res://*/Models.Model1.csdl|res://*/Models.Model1.ssdl|res://*/Models.Model1.msl;provider=System.Data.SqlClient;provider connection string="Server=tcp:*******,1433;Database=******;User ID=******;Password=******;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;MultipleActiveResultSets=true"" providerName="System.Data.EntityClient" />
Related
I have an ASP.NET MVC web application that communicate with sql server with entity framework.
Now i want to upload my website in a server. I've created database
in that server and restore my local database backup in it then i published my application in filesystem and upload it in server.
My problem is connection string in web.configi know that in connection string we should define data source , initial catalog , user id and password and my connection string is like this :
<add name="Bestshooter1Entities" connectionString="metadata=res://*/Models.DomainModel.Model.csdl|res://*/Models.DomainModel.Model.ssdl|res://*/Models.DomainModel.Model.msl;connection string="Data Source=./MSSQLSERVER2014;Initial Catalog=bestshoo_Database;User Id=bestshoo_DatabaseAdmin;Password=******;Persist Security Info=True;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" />
But it still does not work, what is wrong?
The password of your connection string is ***** please replace it with original password.
Some servers allow you to deploy your database on server and provide connection string to use in your application.
Can you please try with Provider Name:
<connectionStrings>
<add name="MyDbContext" connectionString="data source=.\sqlexpress;initial catalog=YourDbName;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient"/>
</connectionStrings>
You just add ProviderName to tag <add />.
<add name="MyDbContext" connectionString="data source=.\sqlexpress;initial catalog=YourDbName;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient"/>
Please excuse me is this is a noob question. I have a MVC project with a number of EF Database first models. When I created them some were created with new connection strings.
I have tried to clean up the project web.config file and commented out the duplicated connection strings,
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=........... />
<add name="DB_A09819_ProductsEntities" connectionString="metadata=........... />
<add name="DB_A09819_PowerDB001Entities" connectionString="metadata=........... />
<!--
<add name="DB_A09819_ProductsEntities_IntranetDownload" connectionString="metadata........... />
<add name="DB_A09819_ProductsPricing" connectionString="metadata=........... />
<add name="DB_A09819_ProductsProjectProposal" connectionString="metadata=.......... />
<add name="DB_A09819_ProductsProposalSystem" connectionString="metadata=........... />
-->
</connectionStrings>
I had thought that MVC would have picked up on the changes and raised errors, however with these changes the project builds and runs on development server.
When I try to add a controller I now get an error that the
---------------------------
Microsoft Visual Studio
---------------------------
Error
There was an error running the selected code generator:
'Unable to retrieve metadata for 'web...............t'.
No connection string named 'DB_A09819_..........'
could be found in the application config file.'
---------------------------
OK
---------------------------
I would like to change the associations and fix the connection string to have a single connection to each of the databases.
There are a number of posts where the solution is to add a connection string, I am trying to clean up my code and remove duplicate connection strings.
How do I change the association to the connection string in the Model and the controllers to ensure that it will run when deployed ?
i am new to EF ...
getting this error while adding another edmx in same project
using same connection string .
this is my connection string
<add name="REFLECTIONDBEntities" connectionString="metadata=res://*/;provider=System.Data.SqlClient;provider connection string="data source=SERVER;initial catalog=REFLECTIONDB;persist security info=True;user id=sa;password=Sqlsa123;multipleactiveresultsets=True;application name=EntityFramework"" />
Same connection Strings Names are not allowed, you can have multiple Connection Strings but with separate names.
Change
name="REFLECTIONDBEntities"
To
name="REFLECTIONDBEntities2"
I'm working on an mvc .net application and I'm using Entity Framework. I have the same database in different servers and I want to change the current server. I tried to change the connection string in the web.config file but it didn't work. How to safely change the server?
You must replace Data Source
<connectionStrings>
<add
name="AdventureWorksEntities"
connectionString="metadata=.\AdventureWorks.csdl|.\AdventureWorks.ssdl|.\AdventureWorks.msl;
provider=System.Data.SqlClient;
provider connection string='Data Source=.....;
Initial Catalog=....;
Integrated Security=True;
Connection Timeout=60;
multipleactiveresultsets=true'"
providerName="System.Data.EntityClient" />
</connectionStrings>
Changing the connection string in web.config is all you need to do.
Make sure you are changing the right connection string (the one with the metadata). Entity Framework will automatically put a connection string in the web.config when the model is first created.
The correct connection string will look something like this:
<add name="AdventureWorksEntities"
connectionString="metadata=.\AdventureWorks.csdl|.\AdventureWorks.ssdl|.\AdventureWorks.msl;
provider=System.Data.SqlClient;provider connection string='Data Source=localhost;
Initial Catalog=AdventureWorks;Integrated Security=True;Connection Timeout=60;
multipleactiveresultsets=true'" providerName="System.Data.EntityClient" />
I'm doing a Model first approach for a Microsoft MVC application. The solution is named "TutorialPile" divided into two projects, Domain and WebUI. I try to add a controller for the Tutorial object to the WebUI project, and I select the domain class and the DB context. However, I get the error, "Unable to retrieve metadata for TutorialPile.Tutorial. Unable to load the specified metadata resource."
Looking around online it looks like it can't find the edmx object in the connection string in the web.config file. I copied the connection string from the Domain project's app.config file but it still doesn't work. Here are the connection strings from the web.config file.
<add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />
<add name="TutorialPileModelContainer" connectionString="metadata=res://*/Models.TutorialPileModel.csdl|res://*/Models.TutorialPileModel.ssdl|res://*/Models.TutorialPileModel.msl;provider=System.Data.SqlClient;provider connection string="data source=.\SQLEXPRESS;initial catalog=TutorialPileDB;integrated security=True;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
<add name="TutorialPileDbContext" connectionString="metadata=res://*/Models.TutorialPileModel.csdl|res://*/Models.TutorialPileModel.ssdl|res://*/Models.TutorialPileModel.msl;provider=System.Data.SqlClient;provider connection string="data source=.\SQLEXPRESS;initial catalog=TutorialPileDB;integrated security=True;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
And here is the connection string that I copied.
<add name="TutorialPileDBEntities" connectionString="metadata=res://*/TutorialPile.csdl|res://*/TutorialPile.ssdl|res://*/TutorialPile.msl;provider=System.Data.SqlClient;provider connection string="data source=.\sqlexpress;initial catalog=TutorialPileDB;integrated security=True;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
Any ideas on what I need to change?
Make sure...
the edmx file's build action is set to EntityDeploy (select the file and go to the properties window).
Your WebUI project references the Domain project
Edit the connection string on your WebUI project to reference the metadata from the other project. Using * means it can come from any dll. BUT, if your edmx file is inside a folder, you have to map the hierarchy.
Eg:
Path to EDMX: TutorialPile.Domain/Model/TutorialPile.edmx
Connection string: res://*/Model.TutorialPile.csdl|res://*/Model.TutorialPile.ssdl|res://*/Model.TutorialPile.msl
Even better:
The documentation suggests you specify the assembly (for performance reasons) using the full name of the assembly (something like: AdventureWorks, 1.0.0.0, neutral, a14f3033def15840). I couldn't make it work. But, using only the name of the assembly works for me. So, if your domain project outputs a TutotialPile.Domain.dll, you can use:
res://TutorialPile.Domain/Model.TutorialPile.csdl|res://TutorialPile.Domain/Model.TutorialPile.ssdl|res://TutorialPile.Domain/Model.TutorialPile.msl