I’m working on a project that at can end up with multiple UI versions / variants, but so far I’ve got two subprojects in my solution Web – containing Web interface with ASP.NET MVC. Service project is place where I have my database context and models defined.
My Goal is to have minimum or possibly no references to EF specific code in my Web project. I want it to be independent so when I switch the dlls with service backend ( from let say SQL to XML or MySQL ) I shouldn’t make multiple modifications in my MVC project.
This is how it looks :

My Questions are:
– so far I’ve found no example of using Database.SetInitializer in other place than Global.asax. I’d like to put database re-creation if model changed in my factory-like DatabaseContextProvider class or in service class that pulls out data from context and provides it to the UI with DTOs. Are there any cons of that location ?
– I would like to have the context’s connectionString to be configurable with Properties/Settings.settings file – is that reasonable ?
You would need a mechanism to call the
Database.SetInitializermethod before the very first usage of theDbContext. That is why its usually called in theGlobal.asaxfile.You can create a class with an initialization method in your
tm.Serviceproject and call it in theApplication_Startmethod and put theDatabase.SetInitializerin that initialization method.Its OK to supply the connection string from a setting file.