我正在将现有的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

因此,每次重新创建上下文时,您将始终拥有更改。在这种情况下,您无需更改其他任何内容。

08-28 05:45