Тип или имя пространства имен "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]()
Ответ 7
Пошаговые инструкции см. в этой новой серии руководств MVC/EF:
http://www.asp.net/entity-framework/tutorials/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application
В учебнике предполагается, что вы установили последнее обновление MVC 3 Tools и предоставили ссылку в том случае, если вы этого не сделали.
Ответ 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 {}
НТН