Is there a way to prevent Entity Framework Code-First from deleting my database diagrams when it is re-building my database?
Without using DropCreateDatabaseIfModelChanges to create your database you can use SQL Migrations
http://www.hanselman.com/blog/EntityFrameworkCodeFirstMigrationsAlphaNuGetPackageOfTheWeek10.aspx. It won't drop the database and will generate alter commands (Incremental database development) . So you can keep your diagram and existing data.
Related
I want to do code first development on an existing SQL Server Database. I have used the Scaffold-DbContext command to generate the entities that I want into the tables I want. That's great. But, there were previously code first migrations done to this database. So I deleted the __EFMigrationsHistory table in the SQL Database. Now I want to start doing migrations. Unfortunately, when I run Add-Migration, it generates migration code to generate all of the tables again. I don't understand how I am supposed to tell it that these tables already exist. When I am reverse engineering, how do I generate the migration of the stuff it's scaffolding for me in the existing database?
Code First Migrations uses a snapshot of the model stored in the most recent migration to detect changes to the model (you can find detailed information about this in Code First Migrations in Team Environments).
Source here.
Run Add-Migration InitialCreate –IgnoreChanges to create the initial migration from an existing database. Then update-database to simply add the migration to the _EFMigrationsHistory table.
After that, you are good to go brother.
I don't want to give my sql user the permissions to create databases.
Is there any way to create the database manually and then have entity framework create the tables inside it?
I'm certain EF Core is smart enough to handle this case. Just create the database, set your permissions and run the command dotnet ef update-database (assuming you have a valid migration).
Usually, an application (or multiple applications) use the same database from separate DbContext classes, which handle their own bounded context (a logical piece of the whole). That would require being able to recognize that Databases and Tables have already been created, and issue appropriate add and alter commands to the schema.
I am in a situation where we have been using (code first) EF migrations against a database that is used as the backing store for two applications. Over the past year or so, we have successfully made DB changes via migrations.
However, at some point a few tables seem to have been manually added and we are now experiencing FK reference errors when we try to delete.
I have attempted the obvious, with the obvious result: Adding the models and generating a migration is going to attempt to recreate the tables in the database.
Is there a strategy to add these new tables to our data model and get our migrations up to date?
I need to migrate data from many xmls to a sql server db and and it has to be done in a transactions.
I thought about EF and dbContext as it's a UOW in it's own right.
My question is
Can you do Database First at run time?
What I want to do is Read all tables from db store in class/dataset and map the db.column to equivalent in xml file and commit.
This has to work in such a way that if a table is added or column added it will work without any code changes as it is driven by db.
The problem I face is that with Db generated from model if a new column is required somebody later on "unfamiliar with EF" as to add the column "manual job".
I can do what I want with raw ado.net by reading db schema and mapping to a dataset but wondering if I could do it using EF.
Hope all clear
any suggestions
Yes you can.
You can use Entity Framework Power Tools which allows you to create Code-First file from Database of yours as you start like Code-First.
Or, you can use Database-first approach also. It's not that hard.
If you try to use database-first approach, please read my trial-and-error experience: post1, post2
I modeled a database with primary keys, foreign keys and unique indexes by using MySQL Workbench. I synchronized my model file with MySQL database and then created a console project in Visual Studio 2012. After that, i added a data entity model with an existing database. There is no problem. To understand if does entity framework create database successfully, i deleted the database. Then i ran the console program, database created successfully but unique indexes couldn't be exported to db. How can i solve this problem?
EF doesn't support unique keys. Unique keys are not used in the model and because of that it also doesn't create them when creating database from model. The only exception is manual creation of unique keys either through custom database intializer or migration (both are used in code-first approach).