it-roy-ru.com

Тип или имя пространства имен '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' (если Вы отсутствует директива using или Ссылка на сборку?) 
  • Не удалось найти тип или имя пространства имен 'DbSet' (У вас Отсутствует директива using или Ссылка на сборку?)

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

135
Chris

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

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

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

192
Shaz

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

64
Darin Dimitrov

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

System.Data.Entity.DbContext

12
John Thompson

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

Вместо

public class MachineDbContext : DbContext

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

public class MachineDbContext : System.Data.Entity.DbContext

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

9
cab0

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

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

7
Felipe Skinner

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

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

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

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

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

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

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

Snap for the same

4
Amitd

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

3
ASHISH

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

  • System.Data.Entity.Infrastructure
  • DbContext
  • DbSet
  • и др.,

удостовериться

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

     <Reference Include = "EntityFramework, версия = 4.1.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089, processorArchitecture = MSIL" />
    

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

     <ItemGroup> 
     ...
     </ ItemGroup> 
    

    в котором хранятся ссылки на другие сборки.

3
user669226

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

3
tdykstra

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

  1. Выберите проект ProjectNAme в обозревателе решений.
  2. В меню «Инструменты» выберите «Диспетчер пакетов библиотеки», который имеет подменю
  3. В подменю выберите Консоль диспетчера пакетов.
  4. В командной строке PM введите install-package EntityFramework, затем Нажмите enter.
3
BehranG BinA

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

2
John

Скачать http://www.dll-found.com/download/e/EntityFramework.dll

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

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

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

Бинго......

2
Sanoop

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

2
Neil

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

2
user2169532

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

2
mesteru_vali

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

2
Shubham Tiwari

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

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

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

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

2
MoMo

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

2
Mpilo Z

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

1
kidistB

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

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

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

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

1
Jason Geiger

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

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

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

1
Muhammad Waqas Iqbal

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

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

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

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

1
Moji

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

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

1
gbk

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

1
Aayush Verma

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

1
Mikayil Abdullayev

сославшись на entityframework.dll, оба system.data.entity работали.

1
meol

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

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

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

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

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

public class PanelLengthContext : DBContext { } ??!

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

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

НТН

0
BKSpurgeon

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

using Practiceusingentityframework.Models;

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

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

а перед этим установите фреймворк для сущностей из Nuget Manager

0
Aravindhan R

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

PM> EntityFrameWork\enable-migrations

0
Michael Felina