Не удалось найти тип или имя пространства имен "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" (are у вас отсутствует директива using или ссылка на сборку?)
  • тип или пространство имен имя в dbset' не удалось найти (are you отсутствует директива using или ссылка на сборку?)

что я упустил?

30 ответов


У меня была та же проблема. Оказывается, вам нужна EntityFramework.dll ссылка (а не система.Данные.Сущность.)

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

Это также полезный пример того, как использовать entity framework code-first с MVC.


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


просто короткая заметка. Это DbContext, а не DBContext. т. е. с строчной буквой "B". Я обнаружил это, потому что у меня была та же проблема, пока intelesense не работал, пока я не попытался ввести полное имя space System.Данные.Сущность... и имя, и, наконец, он предложил вариант нижнего регистра "b": -


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

вместо

public class MachineDbContext : DbContext

Я

public class MachineDbContext : System.Data.Entity.DbContext

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


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

команда: Install-Package EntityFramework


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

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

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

Я установил последнюю версию обновление инструментов MVC 3
затем я установил EntityFramework 4.1
или через NUGet ie. с помощью Visual Studio 2010 Express (Инструменты - >менеджер пакетов библиотеки - > добавить ссылку на пакет библиотеки - > Выберите Online - > EntityFramework)

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

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

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

Snap for the same


для пошаговых инструкций см. эту новую серию учебников MVC / EF: http://www.asp.net/entity-framework/tutorials/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application Учебник предполагает, что вы установили последнее обновление MVC 3 Tools и предоставляет ссылку, если вы этого не сделали.


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


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


    Это помогает очень удобно:

    1. выберите проект ProjectNAme в обозревателе решений.
    2. В меню Сервис выберите менеджер пакетов библиотеки, который имеет подменю.
    3. в подменю выберите консоль диспетчера пакетов.
    4. в командной строке консоли PM введите install-package EntityFramework затем нажмите enter.

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


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


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


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

    мой UIProject был нацелен на .Net Framework 4, но мой DataAccessProject был нацелен на .Net Framework 3.5 по какой-то причине.

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

    проблемы решены. Теперь у меня есть ссылки как на EntityFramework, так и на System.Данные.Сущность


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


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


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


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

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

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

    Затем Направо нажмите на проект - > добавить ссылку - > выберите EntityFramework

    Бинго......


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

    использование системы.Данные.Сущность;

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


    сославшись на entityframework.dll файлы в обе системы.данные.объект работал.


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

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

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

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


    Как альтернатива, можно пойти здесь - инструкция по установке любой необходимой dll.

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


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


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

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

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

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


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


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


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

    PM> EntityFrameWork\enable-миграции


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

    1. добавить правильные ссылки и директивы. Но все равно не получается? Может быть, у вас та же проблема, что и у меня:

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

    public class PanelLengthContext : DBContext { } ??!

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

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

    HTH


    У меня такая же проблема, как и у вас, я не могу реализовать ее в классе контроллера, пока она работает, когда я помещаю ее в класс модели. Добавьте эти коды в верхней части класса контроллера

     using TimeSheetManagementSystem.Data;
     using Microsoft.Extensions.Configuration;
     using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
     using Microsoft.EntityFrameworkCore;
     using Newtonsoft.Json;
    

    я столкнулся с той же проблемой, а затем я добавил пространство имен

    using Practiceusingentityframework.Models;
    

    после добавления он работает нормально

    попробуйте это может помочь вам решить вашу проблему.

    и перед этим установите Entity framework из NuGet Manager