Бросок развертывания веб-сайта Azure. Вводить в заблуждение между DataBaseFirst и CodeFirst

Я застрял с этим "ужасным" сообщением об ошибке при попытке развернуть веб-сайт MVC в Azure:

Код, сгенерированный с использованием шаблонов T4 для разработки Database First и Model First, может работать некорректно, если используется в режиме Code First. Для продолжения использования Database First или Model First убедитесь, что строка подключения Entity Framework указана в файле конфигурации исполняемого приложения. Чтобы использовать эти классы, которые были сгенерированы из Database First или Model First, с Code First добавьте любую дополнительную конфигурацию, используя атрибуты или API DbModelBuilder, а затем удалите код, который выдает это исключение.

Первый рабочий процесс базы данных использовался с нуля (добавление элемента модели данных сущности ADO.Net и последующее подключение мастера к базе данных SQL Server Azure). Так что я не могу понять, почему это мешает мне Code First. Использование EF 6.0 с шаблонами T4. Сгенерированный DbContext выглядит так:

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

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }

        public virtual DbSet<AType> AType { get; set; }
        public virtual DbSet<BType> BType { get; set; }
        // etc.
    }

Строка подключения выглядит следующим образом. Скопировано как в проект DAL, так и в веб-конфигурацию проекта StartUp:

<add name="MyAppEntities" connectionString="metadata=res://*/MyAppModel.csdl|res://*/MyAppModel.ssdl|res://*/MyAppModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=ndkkyxvogj.database.windows.net;initial catalog=DbName;persist security info=True;user id=myuserid;password=Pa$$word;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

Приложение работает без проблем на локальном компьютере.

Процесс развертывания в Azure выполните следующие действия.

  • Создать (пользовательское создание) веб-сайт в Azure и предоставить учетные данные базы данных

  • Загрузить профиль публикации с панели управления Azure

  • В VS нажмите "Опубликовать из запускаемого проекта" и установите следующие параметры:

  • -> Профиль: импортировать загруженный профиль
  • -> Соединение: соединение установлено и проверяется
  • -> Настройки: совсем не уверен, что здесь ожидается!!! Я попробовал обе настройки соединения: с предложенными строками соединения и со строкой соединения EDMX. как это:

    metadata = res: ///MyAppModel.csdl|res:///MyAppModel.ssdl|res://*/MyAppModel.msl;provider=System.Data.SqlClient;provider строка подключения = "источник данных =ndkkyxvogj.database.windows.net; начальный каталог =MyDb; постоянная информация о безопасности =True; идентификатор пользователя =databaseuser; пароль =Pa$$word;MultipleActiveResultSets=True;App=EntityFramework"

Попытался прокомментировать OnModelCreating(). Не сработало Также попытался комментировать бросок на UnintentionalCodeFirstException(). Тоже не сработало.

Несмотря на исследования других вопросов и ответов, мы не смогли найти надежного решения. Любая помощь будет принята с благодарностью.

1 ответ

Решение

Хорошо понял...

На самом деле, если взглянуть на этот пост и на этот пост, кажется, что он вводит в заблуждение Azure между именами строк подключения, которые одинаково указаны на Azure Sql Server и на веб-сайте Azure.

Это не имеет ничего общего с какой-либо плохой реализацией EF между первым кодом / моделью первым или первым дБ...

Поэтому я дал новое имя строки подключения в конфигурации веб-приложения, конструкторе класса контекста и в параметрах имени строки подключения веб-сайтов Azure... И это сработало.

Это была настоящая боль, выяснить это...

Другие вопросы по тегам