where does Entity Framework keeps it's data by default? - entity-framework

I'm using Code-first and entity framework in my .NET MVC 3 application, I created simple entity and can save new one and retreive list of them from entity framework. The problem is that I can not find the db where this data is stored.
I created another application, copied my entity class there and it uses the same storage as the first one, I see the list of entities which were added in the first app.
There is only one connection string in web.config (for default membership provider).
Where is the entity framework data? how can I use my database for it?
Thanks

Ok, I found where the DB is, in my case it is in c:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\
in order to use my database I use this connection string:
<connectionStrings>
<add name="MyEntities"
connectionString="data source=.;
Initial Catalog=DbName;
Persist Security Info=True;
User ID=user;
Password=password"
providerName="System.Data.SqlClient"
/>
</connectionStrings>
I'ts a pity it can not use the same DB as membership provider, it has to be another database.

Related

Entity frawork not work with azure db on azure website, but localy yes

I have problem with Entity framework. If I start web app localy thats all is right, but if I publish on azure then database not work. Localy I use same connection string to azure db, I do not have local database. Where can be problem?
<connectionStrings>
<add name="AzureDbConnectionString"
connectionString="Server=serverName.database.windows.net,1433;Database=UserName;User ID=UserName#serverName;Password=SuperPassword;Trusted_Connection=False;Encrypt=True;"
providerName="System.Data.SqlClient" />
</connectionStrings>
Error: Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlClient'. Make sure the provider is registered in the 'entityFramework' section of the application config file. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.
Peter
On the Azure portal, go to websites -> your website -> configure. Scroll down to "connection strings" and add your connection string there. Make sure you give it the same name as in your web.config file, (in your case "AzureDbConnectionString")

SQL Server Express and Entity Framework

I'm new to SQL Server Express (not to SQL Server in general) and I have a problem. I'm using Entity Framework (6-beta) in an ASP.NET MVC application.
I created a database using the SQL Server Management Studio. I can connect to the DB using Management Studio and my local Windows user account.
I dind't change the default configuration, so the SQL Server stores the data files in :
C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA
The .mdf file of my database is stored in this folder.
My problem is: When I start the MVC application from Visual Studio, Entity Framework failes to open a connection to the database. The exception text is quite unprecise, but the inner exception reveals that it tries to connect to:
C:\Users\<MyUser>\Workspaces\<Solution>\<Project>\App_Data\<Context>.mdf
My connection string is:
"Data Source=.\SQLEXPRESS; Initial Catalog=<Name>; User Instance=False; Integrated Security=True;"
Does anyone know why Entity Framework tries to connect to this file? What can I do?
You need a web.config entry on the MVC application project (in case the DBContext is in another referenced project).
The web.config should have an entry like the one below in the connectionstrings section (note YOURCONTEXTNAME should match the name of your DBContext class).
<add name="YOURCONTEXTNAME" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=YOURDATABASENAME;Integrated Security=SSPI"
providerName="System.Data.SqlClient" />
Ok. I found the problem. I edited the wrong web.config file by accident.
Asp.Net MVC 5 creates a second web.config file in the Views folder.
Of course, the connection string must be inserted in the web.config of the root folder.

Database Connection Error with ef-code-first

I'm new to ef code first and have just used the reverse engineer code first to create a model of an existing database on Microsoft SQL Server 2008.
The problem I'm having is that even though I'm providing User ID and Password in the connection string, it's giving me an authentication error while complaining about my computer name as if I were using Integrated Security (which I'm not.)
The error I get is this:
Cannot open database \"edmTestDBContext\" requested by the login. The login failed.\r\nLogin failed for user 'jwelty-thinkpad\jwelty'.
My connectionString is this:
Data Source=srv-123;Initial Catalog=edmTestDB;Persist Security Info=True;User ID=user;Password=userpass;MultipleActiveResultSets=True
It seams to me like it's ignoring my User ID and using my machine name instead.
It's interesting that the connection string was auto generated by the Entity Framework tool and it worked for building the model but not for actually connecting the model back to the source database.
Any thoughts on what's going on?
I do have full permissions with my username/password as this is what I use with Sql Server Management Studio and that's also how I created the database in the first place.
I tried adding "Integrated Security=False;" and that was no help.
It looks like EF isn't finding your connection string. Make sure that it is in the config file being used (you might need to copy it from the class library config to the application config) and that it either has the same name as the context class or that you provide DbContext with the name by calling the appropriate base constructor. For example:
public EdmTestDBContext()
: base("name=MyConnectionStringName")
{
}
There are some built-in conventions in EF Code-first such as using the name of derived context class from DbContext to find the related connection string in the .config file.
So if your context class is named BlogContext, it will look for the following connectionString first:
<connectionStrings>
<clear />
<add
name="BlogContext"
...

Entity Framework Cannot find connection string

I have a stange problem.
In my solution, I have a "Model" directory. In that directory, I have created an entity model. When I create the model (using the wizard), it creates a new entry for connection string in my app.config (which is at the solution level).
However when I try to access the entity object constructor using the default constructor, I get the error: The specified named connection is either not found in the configuration, not intended to be used with the EntityClient provider, or not valid.
I have a test application, where I have added a link to this app.config. From here I can access the entity object without any problem!
Thanks
Make sure the connection string is in the config file of the executing assembly. If you for instance use EF from af web site, you can copy the connection string from the app.config in the EF assembly to the web.config of the website assembly. Copy all of the connectionStrings-block:
<connectionStrings>
...
</connectionStrings>

Is the Entity Framework compatible with SQL Azure?

I cannot get the Entity Framework to work against SQL Azure. Is this just me or is it not intended to be compatible? (I have tried the original release of EF with VS2008 as well as the more recent VS2010 Beta 2 version)
To check this I created the simplest scenario possible. Add a single table to a local SQL Server 2008 instance. The table has two columns, a primary key of type integer and a string column. I add a single row to the table with values of (1, foobar). I then added exactly the same setup to my SQL Azure database.
Created a console application and generated an EF model from the local database. Run the application and all is good, the single row can be returned from a trivial query. Update the connection string to connect to the SQL Azure and now it fails. It connects to the SQL Azure database without problems but the query fails on processing the result.
I tracked the initial problem down using the exception information. The conceptual model had the attribute Schema="dbo" set for the entity set of my single defined entity. I removed this attribute and now it fails with another error...
"Invalid object name 'testModelStoreContainer.Test'."
Where 'Test' is of course the name of the entity I have defined and so it looks like it's trying to create the entity from the returned result. But for some unknown reason cannot work out this trivial scenario.
So either I am making a really fundamental error or SQL Azure is not compatible with the EF? And that seems just crazy to me. I want to use the EF in my WebRole and then RIA Services to the Silverlight client end.
While I haven't done this myself I'm pretty sure that members on the EF team have, as has Kevin Hoffman.
So it is probably just that you went astray with one step in your porting process.
It sounds like you tried to update the EDMX (XML) by hand, from one that works against a local database.
If you do this most of the changes will be required in the StorageModel element in the EDMX (aka SSDL). But it sounds like you've been making changes in the ConceptualModel (aka CSDL) element.
My guess is you simply need to replace all references to the dbo schema in the SSDL with whatever schema is the SQL Azure schema.
Hope this helps
Alex
To answer the main question - Yes, at least the Entity Framework v4 can be used with SQL Azure - I haven't honestly tried with the initial version (from the .Net Framework 3.5. SP 1).
A little while back I did a complete project and blogged about the experience: http://www.sanderstechnology.com/?p=9961 Hopefully this might help a little bit!
Microsoft's Windows Azure documentation contains How to: Connect to Windows Azure SQL Database Using the ADO.NET Entity Framework.
After creating your model, these instructions describe how to use SQL Azure with the Entity Framework:
Migrate the School database to SQL Database by following the instructions in How to: Migrate a Database by Using the Generate Scripts Wizard (Windows Azure SQL Database).
In the SchoolEFApplication project, open the App.Config file. Change the connection string so that it connects to your SQL Database.
<connectionStrings>
<add name="SchoolEntities"
connectionString="metadata=res://*/SchoolDataModel.csdl|res://*/SchoolDataModel.ssdl|res://*/SchoolDataModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=<provideServerName>.database.windows.net;Initial Catalog=School;Integrated Security=False;User ID=<provideUserID>;Password=<providePassword>;MultipleActiveResultSets=True;Encrypt=True;TrustServerCertificate=False""
providerName="System.Data.EntityClient"/>
</connectionStrings>
Press F5 to run the application against your SQL Database.