'DbContext' türü veya ad alanı bulunamadı [kapalı]


150

ASP.NET MVC (3) için çok yeni ve Visual Studio bir derleme hatası gidermekte zorlanıyorum:

'DbContext' türü veya ad alanı bulunamadı (kullanma yönergesini veya bir montaj başvurusunu kaçırıyor musunuz?)

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; }
    }
}

Aldığım iki hata:

  • 'DbContext' türü veya ad alanı bulunamadı (kullanma yönergesini veya bir montaj başvurusunu kaçırıyor musunuz?)
  • 'DbSet' türü veya ad alanı bulunamadı (kullanma yönergesini veya bir montaj başvurusunu kaçırıyor musunuz?)

Neyi kaçırıyorum?


20
Entity Framework Code First referansını NuGet kullanarak eklediniz mi? Referansları çözmenin en kolay yolu bu olabilir.
Ed Chapel

2
ok - Solution Explorer Tree altında Referanslar -> Kütüphane Paketi Referansı Ekle -> EFCodeFirst -> Yükle üzerine sağ tıkladım. Önerdiğin bu mu? Bu adımları uyguladıktan sonra hala aynı sorun yaşıyorum.
Chris

Bu arada MVC 3 Tools'u en yeni sürüme güncelledim ve asp.net/mvc/tutorials/getting-started-with-mvc3-part4-cs adresinden sonra bir eğitim projesi oluşturdum . Bu projede bu sorunum yok, ama burada ve aşağıda Darin tarafından yapılan önerilere rağmen DbContext'in eski projemde kabul edilmesini sağlayamıyorum ...
Chris

VS2017, EF6, Çözümü kapatın. Çözeltiyi tekrar açın. Artık DbContext'i doğru olarak tanır.
redwards510

1
Paket Yöneticisi Konsolu'nu açın. Araçlar> NuGet Paket Yöneticisi> Paket Yöneticisi Konsolu'nu seçin. Paket Yöneticisi Konsolu'na aşağıdaki komutu girin: install-package EntityFramework
Zahid Hasan

Yanıtlar:


200

Aynı sorunu yaşadım. Görünen o ki, EntityFramework.dll referansına ihtiyacınız var (System.Data.Entity değil).

Ben sadece indirebilirsiniz MvcMusicStore uygulamadan: http://mvcmusicstore.codeplex.com/

MVC ile ilk olarak varlık çerçevesi kodunun nasıl kullanılacağına dair faydalı bir örnek.


7
bu benim deneyimimdi; vs2010 Paket Yöneticisi 4.2.0.0 yüklü olduğunu iddia rağmen 4.2.0.0 için EntityFramework.dll yoktu. Projem vs2010'da açıldığında, Tools, Library Package Manager, install Manager komutunu kullanarak Package Manager Console otomatik olarak EntityFramework uygulamasına başvuruyu ekledi ve sonraki derlemem başarılı oldu. thnx @Shahzad!
gerryLowry

7
Yardımınız için teşekkürler. Umarım Microsoft bir gün pencerelerine kendi yazılımlarının kurulumunu kolaylaştırır! Neye ihtiyaç duyulduğunu ve hepsinin birbirine nasıl uyduğunu anlamak için kaç yere gitmesi şaşırtıcı. NuGet, MS İndirme sitesi, Mesaj panoları, kitaplar, ... gerçekten çok verimli bir zaman.
NoChance

23
En iyi seçeneğiniz, Entity Framework'ü (et al) projelerinize çekmek için NuGet'i (paket yöneticisi) kullanmaktır.
kingdango

2
kurulum işlemlerini yapmak için bazen visual studio'yu yeniden başlatmanız gerekir. bu benim durumumdu.
Bedevi

3
Package Manager Konsolu'nu açın ve yapıştırın: Install-Package EntityFramework
user2862542

71

Sen başvurmak gerekir System.Data.Entityprojenize assebmly veya yükleme EntityFrameworksizin için kurulum her şey olacak Nuget paketi.


1
Darin, birinin bunu nasıl yapacağını açıklayabilir misin?
Chris

11
@Chris Dickinson, Referencesprojedeki öğeye sağ tıklayın ve seçin Add Reference.... Ardından .NETsekmede öğesini seçin System.Data.Entity. NuGet'i kullanmak istiyorsanız, Referencesöğeye sağ tıklayın ve ardından Add Library Package Reference...Çevrimiçi sekmesinde öğesini seçin EntityFramework.
Darin Dimitrov

1
Her iki adımı da takip ettim, ama sorun hala devam ediyor ...
Chris

3
u EntityFramework yüklemek için NuGet kullandınız mı? Çözüm dizininiz boyunca bir "paketleri" klasörü oluşturur. İçinde "EntityFramework.4.1.10331.0" klasörünü bulacaksınız. "Libs" klasöründe "EntityFramework.dll" bulacaksınız. Gözat sekmesini kullanarak referans ekleyin ve yukarıdaki dll seçin. aşağıdaki cevabımı gör .. aynısını yaptım.
Amitd

7
Seçtiğim TOOLS > Library Package Manager > Package Manager ConsoleVS2012 ve daktilo install-package EntityFrameworkistemi de. Mükemmel çalıştı.
Peter Gluck

17

Sadece hızlı bir not. DBContext değil, DbContext'tir. yani küçük 'B' harfiyle. Bunu keşfettim çünkü intelesense System.Data.Entity tam ad alanını yazmaya çalışıncaya kadar çalışmazken aynı sorunu yaşadım ... ve isim ve son olarak küçük harf 'b' seçeneğini önerdi: -

System.Data.Entity.DbContext


1
Sadece sorunun büyük "B" olduğunu keşfetmek için System.Data.Entity ile ilgili tüm referanslar geçiyor. +1
F0r3v3r-A-N00b

Evet bu çözüldü. "Install-Package EntityFramework" adımı sağlandı. Teşekkürler +1.
Paceman

9

VS2010'u kullanırken de aynı sorunu yaşadım. Bunun gerçekten bir cevap olmadığını biliyorum. Sadece birine yardım edebileceğini düşündüm. DBContext için tam adı kullanarak çözdüm.

Onun yerine

public class MachineDbContext : DbContext

kullandım

public class MachineDbContext : System.Data.Entity.DbContext

ve projeyi yeniden inşa etti. Aniden VS mutlu oldu ve ben bile tam adı kaldırmak ve sadece DBContext kullanmak mümkün.


tam adı ... nasıl v direktifini kullanarak eklemeyi unutabilirsiniz ....
x-code

8

Aynı sorunu yaşadım ... EF'yi Paket Yöneticisi Konsolu'ndan yüklemek benim için çalıştı

komut şuydu: Install-Package EntityFramework


4

Derleyiciniz tanımazsa

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

emin olmak

  1. makinenize Entity Framework 4.1 yüklüyse;
  2. .csproj dosyanızda aşağıdaki referansa sahipsiniz

    <Reference Include = "EntityFramework, Sürüm = 4.1.0.0, Kültür = nötr, PublicKeyToken = b77a5c561934e089, işlemciMimari = MSIL" />
    

    elemanın içinde

    <ItemGroup>
      ...
    </ ItemGroup>
    

    diğer meclislere referanslar içerir.


4

Ben de aynı sorun vardı .. VS2010 ekspres var ..

(Not: Bu sorunu görürseniz EntityFramework.dll referanslarını kontrol etmeyi deneyin. Eksik olabilir.)

Aşağıdakiler benim için çözdü.

En son MVC 3 Araçları Güncellemesini
yükledikten sonra EntityFramework 4.1'i
veya NUGet'i kullanarak kurdum. Studio 2010 Express ile (Araçlar-> Kütüphane Paketi Yöneticisi -> Kütüphane paketi referansı ekle -> Çevrimiçi Seç -> EntityFramework)

Garip bir şekilde işe yaramadı ... Yani "EntityFramework.dll" el ile bir başvuru eklemek zorunda kaldı
dll için bir arama yapmayı deneyin .. burada olabilir
"C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \"

Zaten varsa ... sadece bir .net referansı ekleyin.

Not: NuGet kullanıyorsanız, Çözüm dizininizin yanında bir "paketler" klasörü oluşturur. İçinde "EntityFramework.4.1.10331.0" klasörünü bulacaksınız. "Libs" klasöründe "EntityFramework.dll" bulacaksınız. Gözat sekmesini kullanarak
referans ekleyin ve yukarıdaki dll'yi seçin.

Aynısı için çekin


4

Visual Studio 2010 express kullanıyorum C:\Program Files\Microsoft ADO.NET Entity Framework 4.1\Binaries\EntityFramework.dllve sorunu çözmek için bir başvuru ekliyorum .


4

Bu gerçekten kullanışlı olur:

  1. Solution Explorer'da ProjectNAme projesini seçin.
  2. Araçlar Menüsünden, bir alt menüye sahip Kütüphane Paket Yöneticisi'ni seçin.
  3. Alt menüden Package Manager Console'u seçin.
  4. Konsolun PM istemine install-package EntityFramework yazın ve enter tuşuna basın.


3

Projenize eklenmedikçe projeniz EntityFramework sınıflarını çözemez. EntityFramework desteği eklemek için şu adımları izlemeniz gerekir: Araçlar-> Nuget Paket Yöneticisi -> Çözüm taraması için Nuget paketini yönet EntityFramework En son kararlı EntityFramework sürümünü gösterir. Şu anda 6.1.3 son sürümüdür Seçilen proje için yükleyin.



2

Visual Studio Express SP1 Solution Explorer> Başvurular> Kitaplık Paketi Başvurusu Ekle> EntityFramework içinde sağ tıklayın


2

Kullanım CTP5 bunun yerine API bazı değişikliklerle yeni versiyonudur. CTP dizininde yüklü EntityFramework.dll başvurusu eklemeniz gerekir - varsayılan: 32bit sistem için C: \ Program Files \ Microsoft ADO.NET Entity Framework Özelliği CTP5 \ Binaries \ EntityFramework.dll. 64bit sistemde Program Dosyalarına (x86) yerleştirilecektir.


2

Bu, kodlara ayrıldığımda başıma geldi. Düzeltmek için Visual Studio'da projeme sağ tıkladım, Nu-get paketlerini yönetmeyi seçtim, EntityFramework'u kaldırdıktan sonra yeniden yükledim. Sorun çözüldü


2

Bu sorunu yaşadım ve diğer çözümlerin hiçbiri işe yaramadı. Visual Studio 2010 kullanıyorum ve çözümümde iki proje var: UIProject ve DataAccessProject. UIProject DataAccessProject için bir başvuru var.

UIProject'im .Net Framework 4'ü hedefliyordu ancak DataAccessProject'im bir nedenden dolayı .Net Framework 3.5'i hedefliyordu.

  • Her iki projeyi de .Net Framework 4'ü hedefleyecek şekilde değiştirdim
  • Entity Framework NuGet Paketi kaldırıldıktan sonra yeniden yüklendi.

Sorunlar çözüldü. Şimdi EntityFramework ve System.Data.Entity referanslarım var


2

Ben aynı sorunu vardı. Ben varlıkframework referans ekledikten sonra "DBContext" yeniden yazmak zorunda kaldı ve sorunu çözdü.
Visual Studio'nun sınıfı otomatik olarak tanıyamaması ve yeniden yazılmasını beklediği anlamına gelir. bu yüzden önce referans eklemek ve sonra kodu uygulamak en iyisidir. VS 2013 - nihai kullanılmış


2

Önce EntityFramework (Uninstall-paket EntityFramework (görünüşte büyük / küçük harfe duyarlı değil)) kaldırmak, sonra tekrar (Install-package EntityFramework) PM Konsolu aracılığıyla yüklemek zorunda kaldı


1

Bu sorunu vardı, yukarıdaki cevabı okuyun ve entityframework.ddl indir ama alreadt başvurulan bulundu. Bu yüzden isim alanını ekledim ve sorun çözüldü

System.Data.Entity kullanarak;

Yüklü Visual Studio 2010, SP1 kullanıyorum


1

entityframework.dll başvuruda bulunan hem system.data.entity çalıştı.


1

Aynı hatayla karşılaştım, ancak sorun sadece modelimle ilgili yanlışlıkla bir sorundu.

Yanlışlıkla koydum ...

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

... model sınıfının içinde.


1
Bu 3 satır aslında sınıfın içinde mi?
Nate-Wilkins

1

Alternatif yol olarak BURAYA gidebilirsiniz - nasıl gerekli herhangi bir dll yüklemek için talimat.

Veya NuGet'i indirebilir ve VS'den yönetebilirsiniz


1

Referansınızı sağ tıklayın ve NuGet paketlerini yönetmeye gidin, ardından çevrimiçi tümünü seçin, ardından arama metin kutusuna NuGet paket kaynağını Entity Framework yazın ve yükleyin.


1

1) Entity Framework'ün Tüm Projelerden Kaldırılması

2) Visual Studio'yu yeniden başlatın

3) Gerekli tüm projelere yeniden yükleme

ve çalışmaya başladı


1

İhtiyacınız olan her şeye başvurabileceğiniz bir durum olabilir ve hatta sizi System.Data.Entity ad alanına götüren DbContext sınıfında F12 tuşuna basarak Tanıma gidebilirsiniz, ancak yine de bu kötü derleyici uyarısını alırsınız. Projenizin Hedef Çerçevesi ile kullandığınız Entity Framework sürümünün Hedef Çerçevesi'nin eşleştiğinden emin olun. Proje-> Özellikler-> Uygulama Sekmesine gidin. Hedef Çerçeveyi değiştirin (tam olarak hangisinin, deneme yanılma yönteminin yardımcı olacağını söyleyemeyiz.). Sadece iki sentim.


1

Ayrıca bu sorundan birçok kez rahatsız oldum ve sonunda çözümü buluyorum. Edmx dosyasına gidin- Veritabanı Güncelleme Modeli-> Yenile-> Sonlandır. Temiz Çözüm-> Çözümü Yeniden Oluşturun


0

paket yöneticisi konsolunda deneyebilirsiniz

PM> EntityFrameWork \ enable-migrations


0

Diğerlerinin önerdiği gibi:

  1. Doğru referansları ve direktifleri ekleyin. Ama hala çalışmıyor mu? Belki aynı problemi yaşadınız:

Aşağıya bir bakın ve neyin yanlış olduğunu söyleyip söyleyemeyeceğinizi görün:

public class PanelLengthContext : DBContext { } ??!

Sınıf adının yanlış yazılmadığından emin olun - (büyük / küçük harf duyarlılığı)!

  • DbContext doğru yazımdır.
  • şöyle görünmeli:
  • imlayi kontrol et. hayatımın 20 dakikasını benim yaptığım gibi boşa harcamayın.public class PanelLengthContext : DbContext {}

HTH


0

Seninle aynı sorunum var, ben model sınıfına koyarken çalışırken Controller sınıfına uygulayamıyorum. Bu kodları denetleyici sınıfınızın üstüne ekleyin

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

0

Aynı sorunla karşılaştım ve sonra ad alanını ekledim

using Practiceusingentityframework.Models;

Ekledikten sonra iyi çalışıyor

Bunu deneyin sorununuzu çözmenize yardımcı olabilir

bundan önce Nuget Manager'dan varlık çerçevesini yükleyin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.