Как указать EntityFramework ProviderName в функции Azure

Я пытаюсь перенести некоторый код веб-задания на новые функции Azure. До сих пор мне удавалось импортировать мои DLL и ссылаться на них успешно, но когда я использую строку соединения в своем коде, я получаю сообщение об ошибке, говоря, что мне нужно добавить ProviderName:

Строка подключения «ConnectionString» в файле конфигурации приложения не содержит обязательный атрибут providerName. "

Как правило, это не проблема, потому что в веб-задании (или веб-приложении) это будет в App или Web.config, а строка соединения будет просто перезаписана тем, что я ввел в Azure.

С функциями Azure у меня нет web.config (хотя я пытался добавить его безрезультатно), поэтому, естественно, отсутствует имя провайдера.

Как мне это указать?

РЕДАКТИРОВАТЬ: После некоторой игры вокруг и некоторых полезных советов от людей ниже, япочти удалось заставить его работать.

Теперь я делаю следующее:

    var connString = **MY CONN STRING FROM CONFIG**; // Constring without metadata etc.
    EntityConnectionStringBuilder b = new EntityConnectionStringBuilder();
    b.Metadata = "res://*/Entities.MyDB.csdl|res://*/Entities.MyDB.ssdl|res://*/Entities.MyDB.msl";
    b.ProviderConnectionString = connString.ConnectionString;
    b.Provider = "System.Data.SqlClient";
    return new MyDB(b.ConnectionString);

Что дает мне то, что мне нужно для вызова базы данных. Я использую статический метод в частичном классе, чтобы получить экземпляр базы данных, которая выполняет вышеуказанный код, и я украшаю свой MyDB Partial с помощью[DbConfigurationType(typeof(MyDbConfiguration))]

Я определяю эту конфигурацию как:

public class MyDBConfiguration: DbConfiguration
{
    public MyDBConfiguration()
    {
        SetProviderFactory("System.Data.EntityClient", EntityProviderFactory.Instance);
    }
}

мойпроблема остается когда я хочу использовать EF Entities. Здесь он попытается инициализировать тип базы данныхиспользуя оригинальную конфигурацию, давая мне оригинальную ошибку еще раз. Согласно этой трассировке стека:

at Void Initialize()
at System.Data.Entity.Internal.EntitySetTypePair GetEntitySetAndBaseTypeForType(System.Type)
at Void InitializeContext()
at System.Data.Entity.Core.Objects.ObjectContext CreateObjectContextFromConnectionModel()
at Void Initialize()
at Boolean TryInitializeFromAppConfig(System.String, System.Data.Entity.Internal.AppConfig)
at Void InitializeFromConnectionStringSetting(System.Configuration.ConnectionStringSettings)

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

Ответы на вопрос(6)

Ваш ответ на вопрос