Search icon
Subscription
0
Cart icon
Close icon
You have no products in your basket yet
Arrow left icon
All Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletters
Free Learning
Arrow right icon
Entity Framework Core Cookbook - Second Edition

You're reading from  Entity Framework Core Cookbook - Second Edition

Product type Book
Published in Nov 2016
Publisher Packt
ISBN-13 9781785883309
Pages 324 pages
Edition 2nd Edition
Languages
Author (1):
Ricardo Peres Ricardo Peres
Profile icon Ricardo Peres

Table of Contents (15) Chapters

Entity Framework Core Cookbook - Second Edition
Credits
About the Author
About the Reviewer
www.PacktPub.com
Preface
1. Improving Entity Framework in the Real World 2. Mapping Entities 3. Validation and Changes 4. Transactions and Concurrency Control 5. Querying 6. Advanced Scenarios 7. Performance and Scalability Pitfalls Index

Migrations with contexts in different projects


Problems arise if your context is in a different project than the startup one.

Problem

If you have an entry assembly and an additional project/assembly that contains your DbContext and your model, migrations won't work. This is by design.

For example, you have an assembly called Web and an assembly called DomainModel. The latter contains the DbContext and all the model classes and you are trying to generate a migration from the Web folder using the following:

dotnet ef migrations add "Initial version" 

You could also use a similar one. You will get a "Your target project 'Web' doesn't match your migrations assembly 'DomainModel'" error.

How to solve it…

You either need to pass the --startup-project flag to dotnet, if you run it from the DomainModel project:

dotnet ef --startup-project ..\Web migrations add "Initial version" 

Or, from within code, you need to tell Entity Framework which one will be the project containing the startup code:

protected override void OnConfiguring(
DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder.UseSqlServer(_connectionString, opt =>
    {
        //set the migrations assembly
        opt.MigrationsAssembly("Web");
    });
    base.OnConfiguring(optionsBuilder);
}

Note

And, by the way, make sure that you include the Microsoft.EntityFrameworkCore.Design and Microsoft.EntityFrameworkCore.Tools Nuget packages.

lock icon The rest of the chapter is locked
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at $15.99/month. Cancel anytime}