Бросок развертывания веб-сайта 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="data source=ndkkyxvogj.database.windows.net;initial catalog=DbName;persist security info=True;user id=myuserid;password=Pa$$word;MultipleActiveResultSets=True;App=EntityFramework"" 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... И это сработало.
Это была настоящая боль, выяснить это...