Я пытаюсь создать архитектуру Microservices. У меня есть служба без состояния в сочетании с Entity Framework, развернутой в Labur Service Cluster Fabric. Однако моя проблема в том, что когда у меня есть инициализатор с DropCreateDatabase, база данных удаляется, но не воссоздается.DropCreateDatabaseAllways с кодом Сначала не работает с Azure Sql Database
У меня есть следующий Initializer:
class CompanyInitializer : DropCreateDatabaseAlways<CompanyContext>
{
protected override void Seed(CompanyContext context)
{
var companies = new List<Company>
{
new Company { Name = "AAA", City = "Eindhoven", Streetname="Street 12" },
new Company { Name = "BBB", City = "Rotterdam", Streetname = "Street 12" },
new Company { Name = "CCC", City = "Eindhoven", Streetname = "Street 12" }
};
companies.ForEach(s => context.Companies.Add(s));
context.SaveChanges();
base.Seed(context);
}
}
С следующим контекстом:
public class CompanyContext : DbContext
{
public CompanyContext(string connectionString) : base(connectionString)
{
this.Database.Connection.ConnectionString = connectionString;
Database.SetInitializer<CompanyContext>(new CompanyInitializer());
}
public DbSet<Company> Companies { get; set; }
}
И я подключая их через конструктор безгосударственной службы:
public StatelessServiceCompany(StatelessServiceContext context)
: base(context)
{
_databaseConnectionstring = WebConfigurationManager.AppSettings["Entity.Framework.ConnectionString"];
_context = new CompanyContext(_databaseConnectionstring);
new CompanyInitializer().InitializeDatabase(_context);
}
И строка соединения следующая:
Data Source=*****.*****.****.***;Initial Catalog=******;Integrated Security=False;User ID=********;Password=********;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False
Проблема в том, что база данных отбрасывается, но никогда не воссоздается. Я считаю, что отсутствуют права на создание базы данных с помощью кода на платформе Azure.
Во-вторых, ткань кластера обслуживания не позволяет мне включать миграции для проекта. При включении миграции через консоль диспетчера пакетов я получаю следующую ошибку:
"System.BadImageFormatException: Could not load file or assembly 'StatelessServiceCompany' or one of its dependencies. An attempt was made to load a program with an incorrect format."
Как решить эту проблему. Я не хочу делать репликацию Entity Framework через Ado.net.
Редактировать
Я решить мою проблему, удалив инициализаторе и позволяет миграции. Решение для включения миграции находилось в целевой платформе в разделе «Свойства»> «Сборка». Переключение целевой платформы между x64 и x86, похоже, делает трюк. Функция seed в файле конфигурации также является своего рода инициализатором.
Благодарим вас за ответ. Однако я решил свою проблему, разрешив миграцию и удалив инициализатор. – pmulders
У меня такая же проблема. База данных не будет воссоздана. Я думаю, что это проблема отсутствия прав. Возможно, вы можете создать базу данных только через лазурный портал. Это делает первый опыт тестирования и обучения в разработке мобильных веб-приложений с azure несколько разочаровывающим и сложным ... – Inna
Ну, добро пожаловать в постоянно меняющуюся среду Microsoft Stack. Вы, безусловно, можете создать db со всей схемой с Entity Framework непосредственно в Azure, это не должно быть проблемой. Я предлагаю задать отдельный вопрос. – matcheek