Не вдалося знайти ім’я типу або простору імен "DbContext" [закрито]


150

Я ДУЖЕ новачок у ASP.NET MVC (3) і мені важко вирішити помилку збірки у Visual Studio:

Не вдалося знайти ім’я типу або простору імен "DbContext" (ви не використовуєте директиву чи посилання на збірку?)

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" (ви не використовуєте директиву чи посилання на збірку?)

Що я пропускаю?


20
Ви додали базовий код коду Entity Перший посилання за допомогою NuGet? Це може бути найпростішим способом вирішення посилань.
Ed Chapel

2
добре - під Деревом Explorer Solution я правою кнопкою миші клацнув посилання Список літератури -> Додати посилання на бібліотечний пакет -> EFCodeFirst -> Установити. Це те, що ви запропонували? Після виконання цих кроків у мене все ще є та сама проблема.
Кріс

Тим часом я оновив інструменти MVC 3 до новітньої версії та створив проект підручника за asp.net/mvc/tutorials/getting-started-with-mvc3-part4-cs . У цьому проекті у мене немає цієї проблеми, але я не можу дозволити DbContext бути прийнятим у моєму старшому проекті, незважаючи на пропозиції, зроблені тут і Даріном нижче ...
Кріс,

VS2017, EF6, закрийте рішення. Повторно відкрити рішення. Тепер він правильно розпізнає DbContext.
redwards510

1
Відкрийте консоль диспетчера пакунків. Виберіть Інструменти> NuGet Package Manager> Console Package Manager. У консолі диспетчера пакунків введіть таку команду: install-package EntityFramework
Zahid Hasan

Відповіді:


200

У мене було те саме питання. Виявляється, вам потрібна посилання EntityFramework.dll (а не System.Data.Entity).

Я щойно витягнув це з програми MvcMusicStore, яку ви можете завантажити з: http://mvcmusicstore.codeplex.com/

Це також корисний приклад того, як використовувати фреймворк-код сутності спочатку з MVC.


7
це був мій досвід; EntityFramework.dll для 4.2.0.0 не був присутній, навіть незважаючи на те, що менеджер пакунків vs2010 стверджував, що у мене встановлено 4.2.0.0. З моїм проектом, відкритим у vs2010, запуск команди установки через Інструменти, Менеджер пакетів бібліотек, Консоль диспетчера пакунків додав посилання на EntityFramework автоматично, і моя наступна збірка вдалася. thnx @Shahzad!
gerryLowry

7
Спасибі за вашу допомогу. Я сподіваюся, що одного разу Microsoft полегшить установку власного програмного забезпечення на свої вікна! Дивовижно, скільки місць потрібно пройти, щоб зрозуміти, що потрібно і як всі вони поєднуються. NuGet, MS Завантажити сайт, Дошки оголошень, книги,… дійсно дуже продуктивний час.
NoChance

23
Ваша найкраща ставка - використовувати NuGet (менеджер пакунків), щоб залучити Entity Framework (та інші) до своїх проектів.
kingdango

2
іноді вам потрібно перезапустити візуальну студію, щоб зробити монтаж. це був мій випадок.
Бедуїн

3
Відкрийте консоль диспетчера пакунків і вставте: Install-Package EntityFramework
user2862542

71

Вам потрібно посилати System.Data.Entityassebmly на ваш проект або встановити EntityFrameworkпакет NuGet, який налаштує все для вас.


1
Дарин, ти можеш пояснити, як це можна зробити?
Кріс

11
@Chris Dickinson, клацніть правою кнопкою миші на Referencesпункті у проекті та виберіть Add Reference.... Потім на .NETвкладці виберіть System.Data.Entity. А якщо ви хочете скористатися NuGet, клацніть правою кнопкою миші на Referencesпункт, а потім виберіть, Add Library Package Reference...а на вкладці Інтернет - пошук EntityFramework.
Дарин Димитров

1
Я дотримувався обох ваших кроків, але проблема все ще зберігається ...
Кріс,

3
Ви використовували NuGet для встановлення EntityFramework? Він створює папку "пакети" поруч із вашим каталогом Solution. Ви знайдете папку "EntityFramework.4.1.10331.0" всередині неї. У папці "Libs" ви знайдете "EntityFramework.dll" .Додайте посилання на неї за допомогою вкладки "Огляд" і виберіть вище dll. дивіться мою відповідь нижче .. Я зробив те саме.
Амітд

7
Я вибрав TOOLS > Library Package Manager > Package Manager Consoleу VS2012 і набрав install-package EntityFrameworkпідказку. Працювали чудово.
Пітер Глюк

17

Просто швидка примітка. Це DbContext, а не DBContext. тобто з нижнього регістру "B". Я виявив це, тому що у мене була та сама проблема, коли intelesense не працював, поки я не спробував набрати простір повного імені System.Data.Entity ... та ім'я, і ​​нарешті він запропонував нижній регістр 'b' варіант: -

System.Data.Entity.DbContext


1
Я переглядав усі посилання на System.Data.Entity лише для того, щоб виявити, що проблема була у верхньому регістрі "B". +1
F0r3v3r-A-N00b

Так, це вирішило. За умови виконання кроку "Install-Package EntityFramework". Спасибі, +1.
Пейсман

9

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

Замість

public class MachineDbContext : DbContext

я використав

public class MachineDbContext : System.Data.Entity.DbContext

та відновили проект. Раптом VS зрадів, і мені вдалося навіть видалити повністю кваліфіковане ім’я та просто використовувати DBContext.


повноцінне ім'я ... як можна забути додати, використовуючи директиву ....
x-code

8

У мене була така ж проблема ... Установка EF з консолі менеджера пакунків працювала на мене

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


4

Якщо ваш компілятор не розпізнає

  • System.Data.Entity.Infrastructure
  • DbContext
  • DbSet
  • та ін.,

переконайтесь

  1. у вас на машині встановлений Entity Framework 4.1;
  2. у вашому .csproj-файлі ви маєте таке посилання

    <Посилання включати = "EntityFramework, версія = 4.1.0.0, культура = нейтральна, PublicKeyToken = b77a5c561934e089, ProcessArchitecture = MSIL" />
    

    всередині елемента

    <ItemGroup>
      ...
    </ItemGroup>
    

    що містить посилання на інші збори.


4

У мене була така ж проблема .. У мене є VS2010 express ..

(Примітка. Якщо ви бачите цю проблему, спробуйте перевірити посилання на EntityFramework.dll .. Можливо, вона відсутня.)

Наступне вирішило це для мене.

Я встановив останнє оновлення інструментів MVC 3,
потім встановив 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, він створює папку "пакети" поряд з вашою каталогом Solution. Ви знайдете папку "EntityFramework.4.1.10331.0" всередині неї. З папкою "Libs" ви знайдете "EntityFramework.dll".
Додайте посилання на нього на вкладці Огляд і виберіть вищевказаний dll.

Прив’язати до того ж


4

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


4

Це допомагає дуже зручно:

  1. Виберіть проект ProjectNAme в Провіднику рішень.
  2. У меню "Інструменти" виберіть Менеджер пакунків бібліотеки, який має підменю.
  3. У підменю виберіть Консоль диспетчера пакунків.
  4. У запиті PM на консолі введіть install-package EntityFramework, після чого натисніть клавішу Enter.

3

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


3

Ваш проект не може вирішити класи EntityFramework, поки ви не додали його до свого проекту. Для додавання підтримки EntityFramework необхідно виконати наступні кроки: Інструменти-> Менеджер пакунків Nuget -> Управління пакетом Nuget для перегляду рішення EntityFramework У ньому відображається остання стабільна версія EntityFramework. на даний момент 6.1.3 - остання версія. Встановіть його для вибраного проекту.


3

Завантажте http://www.dll-found.com/download/e/EntityFramework.dll

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

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

Потім клацніть правою кнопкою миші на проект -> додати посилання -> виберіть EntityFramework

Бінго ......


2

Visual Studio Express SP1 клацніть правою кнопкою миші в Провіднику рішень> Список літератури> Додати посилання на пакет бібліотеки> EntityFramework


2

Натомість використовуйте CTP5, але це більш нова версія з деякими змінами в API. Ви повинні додати посилання на EntityFramework.dll, який встановлений у каталозі CTP - за замовчуванням є: c: \ Program Files \ Microsoft ADO.NET Entity Framework Feature CTP5 \ Binaries \ EntityFramework.dll для 32-бітної системи. У 64-бітній системі він буде розміщений у файлах програми (x86).


2

Це сталося зі мною, коли я розгалужував код. Щоб виправити це, я клацнув правою кнопкою миші свій проект у Visual Studio, вибрав керувати Nu-get пакетами, видалив EntityFramework, а потім знову встановив його. Проблема вирішена


2

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

Мій UIProject орієнтувався на .Net Framework 4, але мій DataAccessProject чомусь орієнтувався на .Net Framework 3.5.

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

Вирішені проблеми. Тепер у мене є посилання на EntityFramework та System.Data.Entity


2

У мене була така ж проблема. Мені довелося переписати "DBContext" після додавання посилання на entitframework, і це вирішило проблему.
це означає, що Visual studio не змогла розпізнати клас автоматично і чекала його повторного введення. тому найкраще спочатку додати посилання, а потім реалізувати код. VS 2013 - остаточний б / в


2

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


1

У мене виникла ця проблема, прочитав вищевказану відповідь і завантажив entitframework.ddl, але виявив, що на нього посилається alreadt. Тому я додав простір імен і проблема була вирішена

використання System.Data.Entity;

Я використовую Visual Studio 2010, встановлений SP1


1

з посиланням на entitframework.dll працював як system.data.entity.


1

У мене була така ж помилка, але ця проблема була просто випадковою проблемою з моєю моделлю.

Я випадково поклав ...

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

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


1
Ці 3 рядки насправді всередині класу?
Нейт-Вілкінс

1

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

Або ви можете завантажити NuGet і керувати ним з VS


1

Клацніть правою кнопкою миші свою інформацію та перейдіть до керування пакунками NuGet, потім виберіть все в Інтернеті, потім джерело пакунків NuGet у текстовому полі пошуку типу Entity Framework та встановіть його.


1

1) Видалення Entity Framework з усіх проектів

2) Перезавантажте Visual Studio

3) Перевстановлення всіх необхідних проектів

і воно почало працювати


1

Може виникнути випадок, коли ви посилаєтесь на все, що вам потрібно, і навіть можете перейти до визначення, натиснувши F12 на клас DbContext, який переведе вас до простору імен System.Data.Entity, але ви все одно отримуєте це неприємне попередження компілятора. Переконайтеся, що цільова рамка вашого проекту та версія Entity Framework, яку ви використовуєте, відповідають. Перейдіть на вкладку Project-> Properties-> Application. Змініть цільову рамку (не можу точно сказати, кому допоможе, проба та помилка.) Всього два мої центи.


1

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



0

Як і інші запропонували:

  1. Додайте правильні посилання та директиви. Але це все ще не працює? Можливо, у вас є та сама проблема, що і я:

Подивіться нижче і побачите, чи можете ви сказати мені, що не так:

public class PanelLengthContext : DBContext { } ??!

Переконайтесь, що назва класу не є неправильним написанням - (чутливість до регістру)!

  • DbContext є правильним написанням.
  • ось як це має виглядати:
  • перевірити правопис. не витрачайте 20 хвилин свого життя, як я.public class PanelLengthContext : DbContext {}

HTH


0

У мене така ж проблема, як і у вас, я не можу реалізувати її в класі Controller, поки вона працює, коли я кладу її в клас моделі. Додайте ці коди вгорі класу контролерів

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

0

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

using Practiceusingentityframework.Models;

Після додавання це працює нормально

Спробуйте це може допомогти вам вирішити свою проблему

а перед цим встановіть структуру сутності від Nuget Manager

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.