Тип или имя пространства имен "DbContext" не удалось найти

Я ОЧЕНЬ новичок в ASP.NET MVC (3), и мне трудно решить проблему сборки в Visual Studio:

Невозможно найти имя типа или пространства имен "DbContext" (вам не хватает директивы using или ссылки на сборку?)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity;

namespace MyProjectName.Models
{   
    public class MachineModel
    {
        // name
        [Required]
        [Display(Name = "Nom de la machine")]
        public string Name { get; set; }

        // IP
        [Required]
        [RegularExpression(@"(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",
           ErrorMessage = "Donnez une adresse IPv4 valide.")]
        [Display(Name = "Adresse IP de la machine")]
        public string IP { get; set; }
    }

    public class MachineDbContext : DbContext
    {
        public DbSet<MachineModel> Machines{ get; set; }
    }
}

Две ошибки, которые я получаю:

  • Тип или имя пространства имен "DbContext" не найден ( вам не хватает директивы использования или сборка?)
  • Тип или имя пространства имен 'DbSet' не удалось найти (вы отсутствует директива using или сборка?)

Что мне не хватает?

Ответ 1

У меня была такая же проблема. Оказывается, вам нужна ссылка EntityFramework.dll(а не System.Data.Entity).

Я просто вытащил его из приложения MvcMusicStore, которое вы можете скачать с помощью http://mvcmusicstore.codeplex.com/

Это также полезный пример того, как использовать корневой код сущности - сначала с MVC.

Ответ 2

Вам нужно ссылаться на System.Data.Entity assebmly на ваш проект или установить пакет EntityFramework NuGet, который будет настраивать для вас все.

Ответ 3

У меня была проблема с VS2010. Я знаю, что на самом деле это не ответ. Я просто подумал, что это может помочь кому-то. Я разрешил его, используя полное имя для DBContext.

Вместо

public class MachineDbContext : DbContext

Я использовал

public class MachineDbContext : System.Data.Entity.DbContext

и перестроил проект. Внезапно VS был счастлив, и я даже смог удалить полностью квалифицированное имя и просто использовать DBContext.

Ответ 4

Просто быстро. Это DbContext, а не DBContext. то есть с нижним регистром "В". Я обнаружил это, потому что у меня была та же проблема, в то время как intelesense не работал, пока я не попытался ввести полное пространство имен System.Data.Entity... и имя и, наконец, предложил вариант с нижним регистром "b": -

System.Data.Entity.DbContext

Ответ 5

У меня была та же проблема... Установка EF из консоли диспетчера пакетов работала для меня

команда была: Install-Package EntityFramework

Ответ 6

У меня была та же проблема. У меня VS2010 экспресс.

(Примечание. Если вы видите эту проблему, попробуйте проверить ссылки на EntityFramework.dll.. Может быть, он отсутствует.)

Следующее разрешило это для меня.

Я установил последнюю версию Обновление MVC 3 Tools
затем я установил EntityFramework 4.1
или использования NUGet, т.е. с Visual Studio 2010 Express (Инструменты- > Менеджер пакетов библиотек → Добавить библиотеку Ссылка на пакет → Выберите Интернет → EntityFramework)

Странно, что это не сработало. Мне пришлось вручную добавить ссылку на "EntityFramework.dll"
попробуйте выполнить поиск dll.. может быть здесь
"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0 \"

Если у вас уже есть это... просто добавьте ссылку ".net".

Примечание. Если вы используете NuGet, он создает папку "пакеты" вдоль вашего каталога решений. Вы найдете папку EntityFramework.4.1.10331.0 внутри нее. В папке "Libs" вы найдете "EntityFramework.dll".
 Добавьте ссылку на него, используя вкладку Обзор и выберите приведенную выше DLL.

Snap for the same

Ответ 8

Если ваш компилятор не распознает

  • System.Data.Entity.Infrastructure
  • DbContext
  • DbSet
  • et alii,

убедитесь, что

  • у вас есть Entity Framework 4.1, установленный на вашем компьютере;
  • в вашем файле .csproj, у вас есть следующая ссылка

    <Reference Include="EntityFramework, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" />
    

    внутри элемента

    <ItemGroup>
      ...
    </ItemGroup>
    

    который содержит ссылки на другие сборки.

Ответ 9

Я использую Visual Studio 2010 express и добавляю ссылку на C:\Program Files\Microsoft ADO.NET Entity Framework 4.1\Binaries\EntityFramework.dll, чтобы решить проблему.

Ответ 10

Это очень удобно:

  • Выберите проект ProjectNAme в обозревателе решений.
  • В меню "Сервис" выберите "Диспетчер пакетов библиотек", в котором есть подменю.
  • В подменю выберите "Менеджер пакетов".
  • В консолях PM запрос типа install-package EntityFramework, затем нажмите enter.

Ответ 11

Visual Studio Express SP1 Щелкните правой кнопкой мыши в обозревателе решений > Ссылки > Добавить ссылку на пакет библиотеки > EntityFramework

Ответ 12

Используйте CTP5, вместо этого это более новая версия с некоторыми изменениями в API. Вы должны добавить ссылку на EntityFramework.dll, которая установлена ​​в каталоге CTP - по умолчанию: c:\Program Files\Microsoft ADO.NET Entity Framework Feature CTP5\Binaries\EntityFramework.dll для 32-разрядной системы. В 64-битной системе он будет помещен в Program Files (x86).

Ответ 13

Это случилось со мной, когда я разветкил код. Чтобы исправить это, я щелкнул правой кнопкой мыши мой проект в Visual Studio, выбрал управление пакетами Nu-get, удалил EntityFramework, а затем снова установил его. Проблема решена.

Ответ 14

У меня была эта проблема, и ни один из других решений не работал у меня. Я использую Visual Studio 2010, и у меня есть два проекта в моем решении: UIProject и DataAccessProject. UIProject имеет ссылку на DataAccessProject.

Мой UIP проект был нацелен на .NET Framework 4, но мой DataAccessProject по какой-то причине нацелился на .NET Framework 3.5.

  • Я изменил оба проекта на целевые .Net Framework 4
  • Удаленный, затем повторно установлен пакет Entity Framework NuGet.

Проблемы решены. Теперь у меня есть ссылки на EntityFramework и System.Data.Entity

Ответ 15

У меня была та же проблема. Мне пришлось переписать "DBContext" после добавления ссылки на entityframework, и она разрешила проблему.
это означает, что Visual Studio не смог автоматически распознать класс и ожидал, что он будет повторно введен. поэтому лучше всего добавить ссылку, а затем реализовать код. VS 2013 - конечная версия

Ответ 16

Мне пришлось сначала удалить EntityFramework (Uninstall-package EntityFramework (не чувствительный к регистру)), а затем снова установить его (Install-package EntityFramework) через консоль PM

Ответ 17

Ваш проект не может разрешить классы EntityFramework, пока вы не добавите его в свой проект.  Для добавления поддержки EntityFramework вам необходимо выполнить следующие действия: Tools- > Nuget Package Manager → Управление пакетом Nuget для решения просмотреть EntityFramework Он показывает последнюю стабильную версию EntityFramework. в настоящее время 6.1.3 - последняя версия Установите его для выбранного проекта.

Ответ 18

У меня возникла эта проблема, прочитав приведенный выше ответ и загрузив файл entityframework.ddl, но обнаружив, что он ссылается на alreadt. Поэтому я добавил пространство имен и проблема была решена.

с использованием System.Data.Entity;

Я использую Visual Studio 2010, SP1 установлен

Ответ 19

имея ссылку на entityframework.dll, работали как system.data.entity.

Ответ 20

У меня была такая же ошибка, но проблема была просто случайной проблемой с моей моделью.

Я случайно поставил...

public class MyModelDBContext : Context
{
 public DBSet<MyModel> MyModels { get; set; }
}

... внутри класса модели.

Ответ 21

Щелкните правой кнопкой мыши вашу ссылку и перейдите к управлению пакетами NuGet, затем выберите онлайн-все, а затем источник пакета NuGet в текстовом поле типа поиска Entity Framework и установите его.

Ответ 22

В качестве альтернативного способа вы можете пойти ЗДЕСЬ - инструкция по установке любой необходимой DLL.

Или вы можете скачать NuGet и управлять им из VS

Ответ 23

1) Удаление платформы Entity из проектов Все

2) Перезапустите Visual Studio

3) Переустановка во все требуемые проекты

и он начал работать

Ответ 24

Может быть случай, когда вы ссылаетесь на все, что вам нужно, и вы даже можете перейти к определению, нажав F12 в классе DbContext, который приведет вас к пространству имен System.Data.Entity, но вы все равно получите это неприятное предупреждение о компиляторе. Убедитесь, что целевая платформа вашего проекта и версия используемой версии Entity Framework совпадают. Перейдите в Project- > Properties- > Application Tab. Измените целевую структуру (не можете точно сказать, какой из них, проб и ошибок поможет). Только мои два цента.

Ответ 25

Я также сильно раздражаюсь из этой проблемы и, наконец, нахожу решение. Вернемся к файлу edmx- > Обновить модель из базы данных- > Обновить- > Готово. Чистое решение- > Реконструкция решения

Ответ 26

Загрузить http://www.dll-found.com/download/e/EntityFramework.dll

Вставьте его в (для x86)

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\

Затем щелкните правой кнопкой мыши по проекту → добавить ссылку → выберите EntityFramework

Бинго......

Ответ 27

вы можете попробовать на консоли менеджера пакетов

PM > EntityFrameWork\enable-migrations

Ответ 28

VS2017, EF6, Закройте решение. Повторно открыть решение. Теперь он правильно распознает DbContext.

Ответ 29

Как и другие, предположили:

  • Добавьте правильные ссылки и директивы. Но это все еще не работает? Возможно, у вас такая же проблема:

Посмотрите ниже и посмотрите, можете ли вы сказать мне, что не так:

public class PanelLengthContext : DBContext { } ??!

Убедитесь, что имя класса не является ошибкой - (чувствительность к регистру)!

  • DbContext - правильное написание.
  • вот как это должно выглядеть:
  • проверьте орфографию. не тратьте 20 минут своей жизни, как я. public class PanelLengthContext : DbContext {}

НТН