Jenis atau nama namespace 'DbContext' tidak dapat ditemukan [ditutup]

150

Saya SANGAT baru untuk ASP.NET MVC (3) dan saya mengalami kesulitan menyelesaikan kesalahan build di Visual Studio:

Tipe atau nama namespace 'DbContext' tidak dapat ditemukan (apakah Anda melewatkan arahan menggunakan atau referensi rakitan?)

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

Dua kesalahan yang saya dapatkan adalah:

  • Tipe atau nama namespace 'DbContext' tidak dapat ditemukan (apakah Anda melewatkan arahan menggunakan atau referensi rakitan?)
  • Jenis atau nama namespace 'DbSet' tidak dapat ditemukan (apakah Anda melewatkan direktif penggunaan atau referensi perakitan?)

Apa yang saya lewatkan?

Chris
sumber
20
Apakah Anda menambahkan referensi Entity Framework Code First menggunakan NuGet? Itu mungkin cara termudah untuk menyelesaikan referensi.
Ed Chapel
2
ok - di bawah Solution Explorer Tree Saya melakukan klik kanan pada Referensi -> Tambahkan Referensi Paket Perpustakaan -> EFCodeFirst -> Instal. Apakah ini yang Anda sarankan? Setelah mengikuti langkah-langkah ini saya masih memiliki masalah yang sama.
Chris
Sementara itu saya telah memperbarui Alat MVC 3 ke versi terbaru, dan membuat proyek tutorial mengikuti asp.net/mvc/tutorials/getting-started-with-mvc3-part4-cs . Dalam proyek itu, saya tidak memiliki masalah ini, tetapi saya tidak bisa menerima DbContext untuk diterima di proyek lama saya, meskipun ada saran yang dibuat di sini dan oleh Darin di bawah ini ...
Chris
VS2017, EF6, Tutup solusinya. Buka kembali solusi. Sekarang mengenali DbContext dengan benar.
redwards510
1
Buka Konsol Manajer Paket. Pilih Peralatan> Manajer Paket NuGet> Konsol Manajer Paket. Di Konsol Manajer Paket, masukkan perintah berikut: instal-paket EntityFramework
Zahid Hasan

Jawaban:

200

Saya memiliki masalah yang sama. Ternyata, Anda memerlukan referensi EntityFramework.dll (dan bukan System.Data.Entity).

Saya baru saja menariknya dari aplikasi MvcMusicStore yang dapat Anda unduh dari: http://mvcmusicstore.codeplex.com/

Ini juga merupakan contoh berguna tentang cara menggunakan kode kerangka kerja-pertama dengan MVC

Shaz
sumber
7
ini adalah pengalaman saya; EntityFramework.dll untuk 4.2.0.0 tidak ada meskipun Package Manager vs2010 mengklaim saya telah menginstal 4.2.0.0. Dengan proyek saya terbuka di vs2010, menjalankan perintah instal via Tools, Library Package Manager, Package Manager Console menambahkan referensi ke EntityFramework secara otomatis dan build saya berikutnya berhasil. thnx @Shahzad!
gerryLowry
7
Terima kasih atas bantuan Anda. Saya berharap Microsoft suatu hari akan membuat instalasi perangkat lunak mereka sendiri di windows mereka lebih mudah! Sungguh menakjubkan berapa banyak tempat yang harus dikunjungi untuk mengetahui apa yang dibutuhkan dan bagaimana mereka semua cocok bersama. NuGet, situs pengunduhan MS, papan pesan, buku, .... waktu yang sangat produktif.
NoChance
23
Taruhan terbaik Anda adalah menggunakan NuGet (manajer paket) untuk menarik Entity Framework (et al) ke dalam proyek Anda.
kingdango
2
beberapa kali Anda perlu me-restart visual studio untuk membuat instalasi bekerja. ini adalah kasus saya.
Bedouin
3
Buka Package Manager, Konsol dan tempel di: Instal-Paket EntityFramework
user2862542
71

Anda perlu mereferensikan System.Data.Entityassebmly ke proyek Anda atau menginstal EntityFrameworkpaket NuGet yang akan mengatur semuanya untuk Anda.

Darin Dimitrov
sumber
1
Darin, bisakah Anda menjelaskan bagaimana orang akan melakukan ini?
Chris
11
@ Chris Dickinson, klik kanan pada Referencesitem dalam proyek dan pilih Add Reference.... Kemudian di .NETtab, pilih System.Data.Entity. Dan jika Anda ingin menggunakan NuGet, klik kanan pada Referencesitem tersebut dan kemudian pilih Add Library Package Reference...dan di tab Online, cari EntityFramework.
Darin Dimitrov
1
Saya mengikuti kedua langkah Anda, tetapi masalahnya masih berlanjut ...
Chris
3
apakah Anda menggunakan NuGet untuk menginstal EntityFramework? Ini membuat folder "paket" di samping direktori Solution Anda. Anda akan menemukan folder "EntityFramework.4.1.10331.0" di dalamnya. Dalam folder "Libs" Anda akan menemukan "EntityFramework.dll" .Tambahkan referensi untuk itu menggunakan tab Browse dan pilih dll di atas. lihat jawaban saya di bawah ini .. saya melakukan hal yang sama.
Amitd
7
Saya memilih TOOLS > Library Package Manager > Package Manager ConsoleVS2012 dan mengetik install-package EntityFrameworkdi prompt. Bekerja dengan sempurna.
Peter Gluck
17

Hanya catatan singkat. Ini adalah DbContext, bukan DBContext. yaitu dengan huruf kecil 'B'. Saya menemukan ini karena saya memiliki masalah yang sama ketika intelesense tidak berfungsi sampai saya mencoba mengetikkan nama lengkap System.Data.Entity ruang ... dan nama dan akhirnya menyarankan opsi huruf kecil 'b': -

System.Data.Entity.DbContext

John Thompson
sumber
1
Saya telah melalui semua referensi mengenai System.Data.Entity hanya untuk menemukan bahwa masalahnya adalah huruf besar "B". +1
F0r3v3r-A-N00b
Ya ini menyelesaikannya. Langkah "Instal-Paket EntityFramework" telah selesai. Terima kasih, +1.
Paceman
9

Saya memiliki masalah yang sama menggunakan VS2010. Saya tahu ini bukan jawaban. Saya hanya berpikir itu mungkin membantu seseorang. Saya mengatasinya dengan menggunakan nama yang sepenuhnya memenuhi syarat untuk DBContext.

Dari pada

public class MachineDbContext : DbContext

Saya menggunakan

public class MachineDbContext : System.Data.Entity.DbContext

dan membangun kembali proyek. Tiba-tiba VS bahagia, dan saya bahkan dapat menghapus nama yang sepenuhnya memenuhi syarat, dan hanya menggunakan DBContext.

cab0
sumber
nama yang sepenuhnya memenuhi syarat ... bagaimana bisa v lupa untuk menambahkan menggunakan direktif ....
x-code
8

Saya memiliki masalah yang sama ... Menginstal EF dari Package Manager Console bekerja untuk saya

perintahnya adalah: Install-Package EntityFramework

Felipe Skinner
sumber
4

Jika kompiler Anda tidak mengenali

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

yakinkan

  1. Anda memiliki Entity Framework 4.1 yang diinstal pada mesin Anda;
  2. dalam file .csproj Anda, Anda memiliki referensi berikut

    <Referensi Termasuk = "EntityFramework, Versi = 4.1.0.0, Budaya = netral, PublicKeyToken = b77a5c561934e089, processorArchitecture = MSIL" />
    

    dalam elemen

    <ItemGroup>
      ...
    </ItemGroup>
    

    yang menampung referensi ke majelis lain.

pengguna669226
sumber
4

Saya punya masalah yang sama..Saya punya VS2010 express ..

(Catatan: Jika Anda melihat masalah ini, coba periksa referensi ke EntityFramework.dll .. Mungkin hilang.)

Berikut ini diselesaikan untuk saya.

Saya menginstal Pembaruan Alat 3 MVC terbaru
kemudian saya menginstal EntityFramework 4.1
atau menggunakan NUGet yaitu. dari dengan Visual Studio 2010 Express (Tools-> Library Package Manager -> Tambahkan pustaka Referensi paket -> Pilih Online -> EntityFramework)

Anehnya itu tidak berhasil .. Jadi saya harus secara manual menambahkan referensi ke "EntityFramework.dll"
coba lakukan pencarian untuk dll .. mungkin ada di sini
"C: \ Program Files (x86) \ Assemblies Referensi \ Microsoft \ Framework.NETFramework \ v4.0 \ "

Jika sudah memilikinya..hanya tambahkan referensi '.net'.

Catatan: Jika Anda menggunakan NuGet, itu membuat folder "paket" di samping direktori Solusi Anda. Anda akan menemukan folder "EntityFramework.4.1.10331.0" di dalamnya. Dalam folder "Libs" Anda akan menemukan "EntityFramework.dll".
Tambahkan referensi untuk itu menggunakan tab Browse dan pilih dll di atas.

Jepret untuk hal yang sama

Amitd
sumber
4

Saya menggunakan Visual Studio 2010 express dan menambahkan referensi untuk C:\Program Files\Microsoft ADO.NET Entity Framework 4.1\Binaries\EntityFramework.dllmenyelesaikan masalah.

ASI
sumber
4

Ini sangat membantu:

  1. Pilih proyek ProjectNAme di Solution Explorer.
  2. Dari Menu Alat, pilih Manajer Paket Perpustakaan yang memiliki sub-menu.
  3. Dari sub-menu pilih Package Manager Console.
  4. Di PM prompt ketik instal-paket EntityFramework lalu tekan enter.
BehranG BinA
sumber
3

Proyek Anda tidak dapat menyelesaikan kelas EntityFramework hingga Anda tidak menambahkannya di proyek Anda. Untuk menambahkan dukungan EntityFramework Anda harus mengikuti langkah-langkah ini: Tools-> Nuget Package Manager -> Kelola paket Nuget untuk menelusuri solusi EntityFramework Ini menunjukkan versi stabil EntityFramework terbaru. saat ini 6.1.3 adalah versi terbaru Instal untuk proyek yang dipilih.

Shubham Tiwari
sumber
3

Unduh http://www.dll-found.com/download/e/EntityFramework.dll

Rekatkan di (untuk x86)

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

Kemudian Benar pada proyek -> tambahkan referensi -> pilih EntityFramework

Bingo......

Sanoop
sumber
2

Visual Studio Express SP1 Klik kanan di Solution Explorer> Referensi> Tambahkan Referensi Paket Perpustakaan> EntityFramework

mesteru_vali
sumber
2

Gunakan CTP5 sebagai gantinya adalah versi yang lebih baru dengan beberapa perubahan dalam API. Anda harus menambahkan referensi ke EntityFramework.dll yang diinstal di direktori CTP - standarnya adalah: c: \ Program Files \ Microsoft ADO.NET Fitur Kerangka Entitas CTP5 \ Binaries \ EntityFramework.dll untuk sistem 32bit. Pada sistem 64bit itu akan ditempatkan di Program Files (x86).

John
sumber
2

Ini terjadi pada saya ketika saya bercabang kode. Untuk memperbaikinya saya mengklik kanan proyek saya di Visual Studio, memilih mengelola paket Nu-get, menghapus EntityFramework, lalu menginstalnya kembali. Masalah terpecahkan

Neil
sumber
2

Saya baru saja mengalami masalah ini dan tidak ada solusi lain yang bekerja untuk saya. Saya menggunakan Visual Studio 2010 dan saya punya dua proyek dalam solusi saya: UIProject dan DataAccessProject. Proyek UIP memiliki referensi ke DataAccessProject.

UIProject saya menargetkan .Net Framework 4 tetapi DataAccessProject saya menargetkan .Net Framework 3.5 karena beberapa alasan.

  • Saya mengubah kedua proyek menjadi target .Net Framework 4
  • Uninstalled kemudian menginstal ulang Paket Entity Framework NuGet.

Masalah terpecahkan. Sekarang saya punya referensi untuk EntityFramework dan System.Data.Entity

MoMo
sumber
2

Saya memiliki masalah yang sama. Saya harus menulis ulang "DBContext" setelah menambahkan referensi ke entitasframework dan itu menyelesaikan masalah.
ini berarti bahwa Visual studio tidak dapat mengenali kelas secara otomatis dan menunggu untuk diketik ulang. jadi yang terbaik untuk menambah referensi pertama dan kemudian menerapkan kode. VS 2013 - ultimate digunakan


sumber
2

Saya harus terlebih dahulu menghapus EntityFramework (Uninstall-package EntityFramework (tampaknya tidak case-sensitive)), lalu pasang lagi (Instal-paket EntityFramework), melalui Konsol PM

Mpilo Z
sumber
1

Saya punya masalah ini, baca jawaban di atas dan unduh entityframework.ddl tetapi ternyata sudah direferensikan. Jadi saya menambahkan namespace dan masalah terpecahkan

menggunakan System.Data.Entity;

Saya menggunakan Visual Studio 2010, SP1 diinstal

Muhammad Waqas Iqbal
sumber
1

memiliki direferensikan entityframework.dll kedua system.data.entity bekerja.

meol
sumber
1

Saya memiliki kesalahan yang sama tetapi masalahnya hanya masalah tidak disengaja dengan model saya.

Saya tidak sengaja menaruh ...

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

... di dalam kelas model.

Jason Geiger
sumber
1
3 baris itu sebenarnya ada di dalam kelas?
Nate-Wilkins
1

Sebagai cara alternatif, Anda dapat pergi DI SINI - instruksi cara menginstal dll yang diperlukan.

Atau Anda dapat mengunduh NuGet dan mengelolanya dari VS

gbk
sumber
1

Klik kanan referensi Anda dan pergi untuk mengelola paket NuGet, lalu pilih online all, lalu sumber paket NuGet di kotak teks pencarian dengan Entity Framework dan instal.

kidistB
sumber
1

1) Menghapus Instalasi Kerangka Entitas dari Semua proyek

2) Mulai ulang Visual Studio

3) Menginstal ulang ke semua proyek yang diperlukan

dan mulai bekerja

Moji
sumber
1

Mungkin ada kasus di mana Anda mereferensikan semua yang Anda perlukan dan Anda bahkan bisa masuk ke Definisi dengan menekan F12 pada kelas DbContext yang akan membawa Anda ke namespace System.Data.Entity tetapi Anda masih mendapatkan peringatan kompiler jahat ini. Pastikan bahwa Kerangka Target proyek Anda dan versi Kerangka Entitas yang Anda gunakan cocok. Pergi ke Project-> Properties-> Tab Aplikasi. Ubah Kerangka Target (tidak bisa mengatakan yang mana, percobaan dan kesalahan akan membantu.). Hanya dua sen saya.

Mikayil Abdullayev
sumber
1

Saya juga jengkel karena masalah ini berkali-kali dan akhirnya menemukan solusinya. Pergi ke file edmx-> Update Model from Database-> Refresh-> Finish. Solusi Bersih-> Rebuild Solution

Aayush Verma
sumber
0

Anda dapat mencoba konsol manajer paket

PM> EntityFrameWork \ enable-migrasi

Michael Felina
sumber
0

Seperti yang disarankan orang lain:

  1. Tambahkan referensi dan arahan yang benar. Tetapi masih tidak berhasil? Mungkin Anda memiliki masalah yang sama dengan yang saya lakukan:

Lihat di bawah dan lihat apakah Anda dapat memberi tahu saya apa yang salah:

public class PanelLengthContext : DBContext { } ??!

Pastikan nama kelas tidak salah eja - (sensitivitas huruf)!

  • DbContext adalah ejaan yang benar.
  • beginilah tampilannya:
  • Periksa ejaannya. jangan buang 20 menit hidup Anda seperti yang saya lakukan.public class PanelLengthContext : DbContext {}

HTH

BKSpurgeon
sumber
0

Saya memiliki masalah yang sama seperti Anda, saya tidak dapat mengimplementasikannya di kelas Pengontrol sementara ia bekerja ketika saya memasukkannya ke dalam kelas model. Tambahkan kode ini di bagian atas kelas controller Anda

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

Saya telah menghadapi masalah yang sama dan kemudian saya telah menambahkan namespace

using Practiceusingentityframework.Models;

Setelah Menambahkan itu berfungsi dengan baik

Coba ini dapat membantu Anda untuk menyelesaikan masalah Anda

dan sebelum itu instal framework entitas dari Nuget Manager

Aravindhan R
sumber