我正在将现有的Web应用程序(使用Entity Framework 5)迁移到Azure Web角色。
数据库连接字符串从web.config
移到ServiceConfiguration.*.cscfg
文件。
问题是,在自动生成的Model.Context.cs
文件中,我的实体类的定义如下:
public partial class MyEntities : DbContext
{
public MyEntities()
: base("name=MyEntities")
{ }
// DbSets, etc
}
这将始终在
MyEntities
中查找web.config
。如何覆盖此构造函数,以便可以从ServiceConfiguration.*.cscfg
文件传递连接字符串?我可以从此类中派生,就像这样:
public class MyCloudEntities : MyEntities
{
public MyCloudEntities()
: base(CloudConfigurationManager.GetSetting("MyEntities"))
{ }
}
但是然后我必须在代码库中更改
MyEntities
的每个实例,这不会阻止开发人员将来使用MyEntities
。 最佳答案
您可以更改Model.Context.tt文件,以使用
CloudConfigurationManager.GetSetting("MyEntities")
代替
"name=MyEntities"
对于MyEntities
因此,每次重新创建上下文时,您将始终拥有更改。在这种情况下,您无需更改其他任何内容。