Entity Framework DbContext в веб-роли Azure


Я переношу существующее веб-приложение (с помощью Entity Framework 5) в веб-роль Azure.

Строка подключения к базе данных перемещается из файла web.config в файл ServiceConfiguration.*.cscfg.

Проблема в том, что в автоматически генерируется Model.Context.cs файл, мой класс сущностей определяется следующим образом:

public partial class MyEntities : DbContext
{
    public MyEntities()
        : base("name=MyEntities")
    { }

    // DbSets, etc
}

Это всегда будет искать MyEntities в web.config. Как я могу переопределить этот конструктор, чтобы передать строку подключения из файла ServiceConfiguration.*.cscfg?

I может быть производным от этого класса, например:

public class MyCloudEntities : MyEntities
{
    public MyCloudEntities()
        : base(CloudConfigurationManager.GetSetting("MyEntities"))
    { }
}
Но тогда я должен изменить каждый экземпляр MyEntities в базе кода, и это не помешает разработчикам использовать MyEntities в будущем.
1 8

1 ответ:

Вы можете изменить Model.Context.tt файл, использовать

CloudConfigurationManager.GetSetting("MyEntities")

Вместо

"name=MyEntities"

Для Моих Достоинств

Таким образом, каждый раз, когда контекст будет воссоздан, вы всегда будете иметь свои изменения. В этом случае вам не нужно ничего менять.