EF6, Code-First, enable-migrations, «Невозможно загрузить указанный ресурс метаданных»,

code-first code-first-migrations entity-framework entity-framework-6

Вопрос

Я создал библиотеку классов C # с тремя классами сущностей и DbContext для базы данных первого поколения кода. Все пошло хорошо с версией 1. Я создал отдельную тестовую библиотеку, и библиотека классов с классом DbContext вела себя так, как ожидалось.

Теперь я хотел сделать одно из полей обязательным и следовать кодовым первым соглашениям, я добавил атрибут [Обязательный] к свойству в классе сущности. Следующим шагом было включение миграции.

Я пошел в консоль диспетчера пакетов, ввел «enable-migrations» и ... bang ... « Не удалось загрузить указанный ресурс метаданных ».

Для справки мой класс DbContext включает:

public OrganisationsContext()
    : base("Leegz_Entities_Organisations")
{
    this.Configuration.LazyLoadingEnabled = false;
    this.Configuration.ProxyCreationEnabled = false;
}

public DbSet<Organisation> Organisations { get; set; }
public DbSet<Member> Members { get; set; }
public DbSet<LeegzUser> LeegzUsers { get; set; }

и мой app.config содержит:

public OrganisationsContext()
    : base("Leegz_Entities_Organisations")
{
    this.Configuration.LazyLoadingEnabled = false;
    this.Configuration.ProxyCreationEnabled = false;
}

public DbSet<Organisation> Organisations { get; set; }
public DbSet<Member> Members { get; set; }
public DbSet<LeegzUser> LeegzUsers { get; set; }

Я видел несколько потоков по этому вопросу, но все они, кажется, говорят об ошибках в ссылочных элементах файла модели EDMX. Однако, поскольку я использовал код сначала, у меня нет модели (возможно, мне не хватает шага здесь), поэтому совет, который я видел по отношению к информации EDMX в строке соединения, не кажется обратиться ко мне.

Любые идеи, пожалуйста?

Принятый ответ

  1. Если у вас есть несколько проектов в решении, убедитесь, что в окне консоли менеджера пакетов вы выбрали проект с помощью dbContext.
  2. Миграции используют connectionString с именем, равным классу DbContext. В вашем случае это OrganisationsContext, но не Leegz_Entities_Organisations.

Популярные ответы

У меня была аналогичная проблема, но с другим результатом. Потребовалось слишком много часов для отладки, вот несколько советов.

  1. «Невозможно загрузить указанный ресурс метаданных». ошибка связана с вашими строками подключения.
  2. Начните с проверки строки подключения в вашем проекте, где у вас есть все ваши сущности.
  3. Убедитесь, что строка соединения используется для подхода Code First, а не для First Model или First First Database (см. Ниже, например).
  4. Повторите эти шаги во всех проектах вашего решения, где у вас есть строка подключения, связанная с вашим DbContext.
  5. Затем повторите команду Enable-Migrations и она должна работать правильно.

Пример примера первой строки подключения:

<add name="MyContext" 
    connectionString="metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.;initial catalog=MY_DB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" 
    providerName="System.Data.EntityClient" />

Пример строки первого примера кода:

<add name="MyContext" 
    connectionString="metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.;initial catalog=MY_DB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" 
    providerName="System.Data.EntityClient" />



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему