Entity Framework DbContext in Azure Web Role

2019-04-24 11:38发布

问题:

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.