I have a standard model set.
I have a base context class that inherits from dbcontext to add some features I needed.
public class MyContext : DbContext
{
public void MyFeature() {
}
}
I then have my actual Data Context:
public class DataContext : MyContext
{
public DbSet<Category> Categories { get; set; }
public DbSet<Product> Products { get; set; }
}
I want to use the scaffolder built in when you create a controller, but I get an error “Unsupported Context Type”
If I change the datacontext to just inherit from dbcontext directly it works, but at this point I have alot of stuff that uses the added features, so changing the inheritance cant be done without commenting out all that stuff. And I have of course simplified down the features, it is actually quite alot of stuff, so adding it directly into the datacontext would be alot of work, plus the scaffolder should be smart enough to see that the datacontext is a dbcontext.
How can I use the scaffolder with my datacontext?
Why don’t you use Composition?
If your feature really is just needed as lets say a few methods needed in those objects I would put those methods in a separate class called
ContextDetails– something along those lines and haveDataContextcontain aContextDetailslike so:And if the
ContextDetailsobject needs information about theDataContext/DbContextit’s in pass theDataContext/DbContextinto a method or even the constructor.If you don’t like Composition for this problem maybe you want to use an Interface. If that’s the case check out http://www.codeproject.com/Tips/309753/Repository-Pattern-with-Entity-Framework-4-1-and-C
The best reason I could find for why the inheritance is not working in your example.
EDIT:
I read my answer and realized
DBDetailsmight not be the best name but you get the idea. Extract the implementation and use it as a separate entity. Good luck!