Combining Code First tables and existing tables in one context?

c# ef-migrations entity-framework-6

Question

I have several tables in my SQL database that are generated from POCO objects using Code First and Migrations. I also have several tables in a different Schema that are created outside of the project by another process.

How would I combine these two sets of tables in one DB Context without losing the code first migrations features and without overwriting the existing tables in the second Schema?

1
2
2/23/2016 4:18:43 PM

Accepted Answer

Pretty simple actually. Create or reverse engineer the other schema POCOs. Add any fluent config needed (or get it from reverse engineered class)

public virtual DbSet<OtherSchemaTable> OtherSchemaTable {get; set; }'
...

Create a new migration to replace your snapshot, but not update the database:

add-migration OtherSchemaAdded -IgnoreChanges
update-database

Now you can continue on with migrations for your tables and reference the other schema. As long as you don't change other schema models you are OK. If you are worried about that, another option is to use database views to reference the other schema tables (assuming no updates needed).

2
2/25/2016 3:09:00 PM

Popular Answer

That means you have to take over the migrations process. I am not sure the EF team currently supports exempting certain entities from the Migration process (at least not directly). Perhaps you can the entities in question with a custom Attribute that you define. Then override the default SqlGenerator to ignore entities with this Attribute so CREATE TABLE statements are not issued for them.



Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow