タイプまたは名前空間名「DbContext」が見つかりませんでした[終了]


150

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

私が得る2つのエラーは次のとおりです。

  • タイプまたは名前空間名 'DbContext'が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)
  • タイプまたは名前空間名「DbSet」が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)

何が欠けていますか?


20
NuGetを使用してEntity Framework Code First参照を追加しましたか?それが参照を解決する最も簡単な方法かもしれません。
エドチャペル

2
ok-ソリューションエクスプローラーツリーで、[参照]-> [ライブラリパッケージ参照の追加]-> [EFCodeFirst]-> [インストール]を右クリックしました。これはあなたが提案していたことですか?これらの手順を実行しても、同じ問題が発生します。
クリス

その間、MVC 3ツールを最新バージョンに更新し、asp.net/mvc/ tutorials /getting-started-with-mvc3-part4-csに従ってチュートリアルプロジェクトを作成しました。そのプロジェクトでは、この問題はありませんが、ここでの提案と以下のDarinによる提案にもかかわらず、古いプロジェクトでDbContextを受け入れることができません...
Chris

VS2017、EF6、ソリューションを閉じます。ソリューションを再開します。DbContextを正しく認識するようになりました。
redwards510 2017

1
パッケージマネージャーコンソールを開きます。[ツール]> [NuGetパッケージマネージャー]> [パッケージマネージャーコンソール]を選択します。パッケージマネージャーコンソールで、次のコマンドを入力します。install-package EntityFramework
Zahid Hasan

回答:


200

同じ問題がありました。結局のところ、(System.Data.Entityではなく)EntityFramework.dll参照が必要です。

次の場所からダウンロードできるMvcMusicStoreアプリケーションからプルしました:http ://mvcmusicstore.codeplex.com/

また、MVCでエンティティフレームワークをコードファーストで使用する方法の便利な例でもあります。


7
これは私の経験でした。4.2.0.0がインストールされているとvs2010 Package Managerが主張したにもかかわらず、4.2.0.0のEntityFramework.dllが存在しませんでした。vs2010でプロジェクトを開いた状態で、ツール、ライブラリパッケージマネージャー、パッケージマネージャーコンソールを介してインストールコマンドを実行すると、EntityFrameworkへの参照が自動的に追加され、その後のビルドは成功しました。thnx @Shahzad!
gerryLowry

7
ご協力いただきありがとうございます。Microsoftがいつか自分のソフトウェアをWindowsに簡単にインストールできるようになってほしいと思います!何が必要で、それらがどのように組み合わされるかを理解するためにいくつの場所に行かなければならないのは驚くべきことです。NuGet、MSダウンロードサイト、メッセージボード、書籍など、実に非常に生産的な時間です。
NoChance

23
あなたの最善の策は、NuGet(パッケージマネージャー)を使用してEntity Framework(その他)をプロジェクトに取り込むことです。
キングダンゴ

2
インストールを機能させるために、Visual Studioを再起動する必要がある場合があります。これは私のケースでした。
ベドウィン2014年

3
パッケージマネージャーコンソールを開いて貼り付けます。Install-PackageEntityFramework
user2862542

71

System.Data.Entityアセンブリをプロジェクトに参照するか、EntityFrameworkすべてをセットアップするNuGetパッケージをインストールする必要があります。


1
ダリン、これをどうやってやるのか説明してくれませんか?
クリス

11
@Chris Dickinson、Referencesプロジェクトのアイテムを右クリックして、を選択しますAdd Reference...。次に、.NETタブでを選択しますSystem.Data.Entity。NuGetを使用する場合は、Referencesアイテムを右クリックして[ Add Library Package Reference...オンライン]タブを選択し、を検索しEntityFrameworkます。
Darin Dimitrov

1
私はあなたの両方の手順を踏みましたが、問題はまだ解決しません...
Chris

3
NuGetを使用してEntityFrameworkをインストールしましたか?それは、ソリューションディレクトリの横に「パッケージ」というフォルダーを作成します。その中に「EntityFramework.4.1.10331.0」フォルダーがあります。「Libs」フォルダー内には「EntityFramework.dll」があります。「参照」タブを使用して参照を追加し、上記のdllを選択します。以下の私の答えを参照してください。私は同じことをしました。
11

7
TOOLS > Library Package Manager > Package Manager ConsoleVS2012で選択install-package EntityFrameworkし、プロンプトで入力しました。完璧に働きました。
Peter Gluck、

17

簡単なメモ。DBContextではなくDbContextです。つまり、小文字の「B」を使用します。これは、完全な名前空間System.Data.Entity ...と名前を入力して、最後に小文字の「b」オプションを提案するまで、インテリセンスが機能していなかったときに同じ問題が発生したためです

System.Data.Entity.DbContext


1
System.Data.Entityに関するすべての参照を調べたところ、問題は大文字の「B」であることがわかりました。+1
F0r3v3r-A-N00b 2015

はい、これで解決しました。「Install-Package EntityFramework」ステップが実行された場合。ありがとう、+ 1。
ペースマン

9

VS2010を使用して同じ問題が発生しました。私はこれが本当に答えではないことを知っています。私はそれが誰かを助けるかもしれないと思っただけです。DBContextの完全修飾名を使用して解決しました。

の代わりに

public class MachineDbContext : DbContext

使った

public class MachineDbContext : System.Data.Entity.DbContext

プロジェクトを再構築しました。突然VSは幸せになり、完全修飾名を削除してDBContextを使用することさえできました。


完全修飾名... Vディレクティブを使用して追加することを忘れできるか....
X-コード

8

同じ問題が発生しました... Package Manager ConsoleからEFをインストールするとうまくいきました

コマンドは: Install-Package EntityFramework


4

コンパイラが認識しない場合

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

確認してください

  1. Entity Framework 4.1がマシンにインストールされている。
  2. あなたの.csprojファイルには、次の参照があります

    <Reference Include = "EntityFramework、Version = 4.1.0.0、Culture = neutral、PublicKeyToken = b77a5c561934e089、processorArchitecture = MSIL" />
    

    要素内

    <ItemGroup>
      ...
    </ ItemGroup>
    

    他のアセンブリへの参照を格納します。


4

同じ問題が発生しました。VS2010Expressを使用しています。

(注:この問題が発生した場合は、EntityFramework.dllへの参照を確認してください。見つからない可能性があります。)

次は私のためにそれを解決しました。

最新のMVC 3ツールアップデート
をインストールしてから、EntityFramework 4.1をインストールする
か、NUGet ieを使用しました。Visual Studio 2010 Expressから(ツール->ライブラリパッケージマネージャー->ライブラリパッケージ参照の追加->オンラインを選択-> EntityFramework)

不思議なdidntの私は、手動で「EntityFramework.dll」への参照を追加する必要がありましたwork..Soという
DLLの検索を行う試みるが、ここに..may
C」:\プログラムファイル(x86の)\リファレンスアセンブリ\マイクロソフト\ Framework.NETFramework \ v4.0 \ "

すでに持っている場合は、「。net」参照を追加してください。

注:NuGetを使用すると、Solutionディレクトリと並んで「パッケージ」フォルダが作成されます。その中に「EntityFramework.4.1.10331.0」フォルダがあります。「Libs」フォルダ内には「EntityFramework.dll」があります。[参照]タブを使用
して参照を追加し、上記のdllを選択します。

同じようにスナップ


4

Visual Studio 2010 Expressを使用して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

プロジェクトに追加しない限り、プロジェクトはEntityFrameworkクラスを解決できません。EntityFrameworkサポートを追加するには、次の手順に従う必要があります。ツール-> Nuugeパッケージマネージャー->ソリューションのNugetパッケージの管理EntityFrameworkこれは、最新の安定したEntityFrameworkバージョンを示します。現在6.1.3が最新バージョンです。選択したプロジェクトにインストールしてください。



2

Visual Studio Express SP1ソリューションエクスプローラーで右クリック>参照>ライブラリパッケージ参照の追加> EntityFramework


2

代わりにCTP5を使用してください。APIが一部変更された新しいバージョンです。CTPディレクトリにインストールされているEntityFramework.dllへの参照を追加する必要があります-デフォルトはc:\ Program Files \ Microsoft ADO.NET Entity Framework Feature 32ビットシステムのCTP5 \ Binaries \ EntityFramework.dllです。64ビットシステムでは、Program Files(x86)に配置されます。


2

これは、コードを分岐したときに起こりました。これを修正するには、Visual Studioでプロジェクトを右クリックし、Nu-getパッケージの管理を選択し、EntityFrameworkをアンインストールしてから、再インストールしました。問題が解決しました


2

私はこの問題を抱えていて、他の解決策はどれもうまくいきませんでした。私はVisual Studio 2010を使用しており、ソリューションにはUIProjectとDataAccessProjectの2つのプロジェクトがあります。UIProjectには、DataAccessProjectへの参照があります。

UIProjectは.Net Framework 4をターゲットにしていましたが、DataAccessProjectは何らかの理由で.Net Framework 3.5をターゲットにしていました。

  • 両方のプロジェクトを.Net Framework 4をターゲットに変更しました
  • Entity Framework NuGetパッケージをアンインストールしてから再インストールしました。

問題は解決しました。今私はEntityFrameworkとSystem.Data.Entityの両方への参照を持っています


2

同じ問題がありました。entityframeworkへの参照を追加した後、「DBContext」を書き換える必要があり、問題が解決しました。
つまり、Visual Studioはクラスを自動的に認識できず、クラスが再入力されるのを待っていました。したがって、最初に参照を追加してからコードを実装するのが最善です。VS 2013-最終的に使用


2

最初にEntityFramework(Uninstall-package EntityFramework(大文字と小文字は区別されないようです))をアンインストールしてから、PMコンソールを介して再インストールする必要があります(Install-package EntityFramework)


1

私はこの問題を抱えていました。上記の回答を読み、entityframework.ddlをダウンロードしましたが、すでに参照されていることがわかりました。名前空間を追加して問題を解決しました

System.Data.Entityを使用します。

Visual Studio 2010、SP1をインストールして使用しています


1

entityframework.dllを参照したことで、両方のsystem.data.entityが機能しました。


1

同じエラーが発生しましたが、問題はモデルの偶発的な問題でした。

誤って入れました...

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

...モデルクラスの内部。


1
それらの3行は実際にはクラス内ですか?
Nate-Wilkins

1

別の方法として、あなたが行くことができHERE -必要なDLLをインストールする方法を指示します。

または、NuGetをダウンロードしてVSから管理することもできます


1

参照を右クリックして、NuGetパッケージの管理に移動します。次に、すべてオンラインを選択してから、検索テキストボックスでEntity FrameworkタイプのNuGetパッケージソースを選択してインストールします。


1

1)すべてのプロジェクトからEntity Frameworkをアンインストールする

2)Visual Studioを再起動します

3)必要なすべてのプロジェクトへの再インストール

そしてそれは働き始めました


1

必要なすべてを参照し、System.Data.Entity名前空間に移動するDbContextクラスでF12を押すことで定義に移動することもできますが、この厄介なコンパイラ警告が表示されます。プロジェクトのターゲットフレームワークと、使用しているEntity Frameworkバージョンのターゲットフレームワークが一致していることを確認してください。「プロジェクト」->「プロパティー」->「アプリケーション」タブに進みます。ターゲットフレームワークを変更します(正確に言うことはできませんが、試行錯誤が役立ちます)。ちょうど私の2セント。


1

私もこの問題に何度も苛立ち、最終的に解決策を見つけました.edmxファイル->データベースからモデルを更新->更新->完了に移動します。クリーンソリューション->ソリューションの再構築



0

他の人が提案したように:

  1. 正しい参照とディレクティブを追加します。しかし、それでも機能しませんか?多分あなたは私がしたのと同じ問題を抱えています:

以下を見て、何が悪いのか教えてくれるかどうかを確認してください。

public class PanelLengthContext : DBContext { } ??!

クラス名にスペルミスがないことを確認してください-(大文字と小文字の区別)!

  • DbContext 正しいスペルです。
  • これは次のようになります。
  • スペルを確認してください。私のようにあなたの人生の20分を無駄にしないでください。public class PanelLengthContext : DbContext {}

HTH


0

私はあなたと同じ問題を抱えています。それをモデルクラスに配置すると機能しますが、コントローラークラスに実装できません。これらのコードをコントローラークラスの一番上に追加します

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

0

私は同じ問題に直面していて、名前空間を追加しました

using Practiceusingentityframework.Models;

追加後、正常に動作しています

これを試して、問題の解決に役立ててください。

その前にNuget Managerからエンティティフレームワークをインストールします

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.