使用Entity Framework 6中的环境变量在登台/生产数据库之间切换

时间:2016-08-24 21:31:48

标签: c# entity-framework azure

在推送代码时,我使用Azure和插槽变量在登台和生产数据库之间切换。这两个数据库将始终相同。

这是我如何尝试在两者之间切换的简化设置。

的Web.config

28,000

Constants.cs

<connectionStrings>
    <add name=“StagingDatabase” connectionString=“YYY” />
    <add name="ProductionDatabase” connectionString=“XXX” />
 </connectionStrings>

问题在于Code.cs,因为我正在返回DbContext,Entity Framework不知道数据库中的任何表,并且不会编译引用dbContext没有Table的定义。

Code.cs

public static DbContext getDatabase()
    {
        if (@Environment.GetEnvironmentVariable("isDatabaseStaging"))
        {
            return new StagingDatabase();
        }
        else
        {
            return new ProductionDatabase();
        }
    }

我还应该注意,我的数据库都有单独的.edmx文件,如果我能让它们使用同一个文件,它可能会正常工作吗?

1 个答案:

答案 0 :(得分:1)

您可以在web.config中定义一个connectionString,然后在Azure中将connectionString设置为一个插槽设置,而不是打开一个变量:

的Web.Config

<connectionStrings>
    <add name="Database" connectionString="YYY" />
</connectionStrings>

Azure设置:

Azure connectionString Settings