问题
I am migrating an existing Web Application (using Entity Framework 5) to an Azure Web Role.
The database connection string is being moved from the web.config
to the ServiceConfiguration.*.cscfg
files.
The problem is that in the auto-generated Model.Context.cs
file, my entities class is defined like this:
public partial class MyEntities : DbContext
{
public MyEntities()
: base("name=MyEntities")
{ }
// DbSets, etc
}
This will always look for MyEntities
in the web.config
. How can I override this constructor so that I can pass in the connection string from the ServiceConfiguration.*.cscfg
file?
I could derive from this class, like so:
public class MyCloudEntities : MyEntities
{
public MyCloudEntities()
: base(CloudConfigurationManager.GetSetting("MyEntities"))
{ }
}
But then I have to change every instantiation of MyEntities
in the code base, and it wont prevent developers from using MyEntities
in the future.
回答1:
You can change Model.Context.tt file, to use
CloudConfigurationManager.GetSetting("MyEntities")
in place of
"name=MyEntities"
for MyEntities
So each time when context will be re-created, you will always have your changes. In this case you don't need to change anything else.
来源:https://stackoverflow.com/questions/17679088/entity-framework-dbcontext-in-azure-web-role