6

こんにちは、私はこのエラーが出ます:

CS0246:型または名前空間名 'DataClasses1DataContext'が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)

この.aspxファイルの場合:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class WebApplication1_admin_Places : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        DataClasses1DataContext db = new DataClasses1DataContext();
        var query = (from m in db.Places orderby m.Name select m);
        PlacesList.DataSource = query;
        PlacesList.DataBind();
    }
}

事は、/フォルダに私はDBにアクセスすることができますが、/ adminフォルダに私はこのエラーが出ます。

何がおかしいのですか?

編集

CS0012:型 'System.Data.Linq.DataContext'が参照されていないアセンブリで定義されています。アセンブリ 'System.Data.Linq、バージョン= 3.5.0.0、カルチャ=ニュートラル、PublicKeyToken = b77a5c561934e089'への参照を追加する必要があります。

どういう意味ですか?


  • その最新のエラーを解決するための私のコメントを参照してください。 - RPM1984

8 답변


5

開始する場所はいくつかあります。

  • DataClasses1DataContextを含むdllはどこですか?他のフォルダではなく、あるフォルダから取得できる理由はありますか
  • ルート設定ファイルに設定されている値を上書きする設定ファイルがadminフォルダにありますか。

編集する

これは構成上の問題のようです。 configはおそらくmsl(モデル)ファイルは現在のディレクトリにあり、それはルートディレクトリにあると言っています。したがって、rootになっているときは機能しますが、adminになっているときは機能しません。

見る:Entity Framework Entity Connectionを使用するとMetadataExceptionが発生する同様の問題のために。


  • それはコンパイラエラー実行時ではなく、取得中です。これは、相対パスや絶対パスや設定とは関係がないことを意味します(これらはランタイムエラーの原因となります)。私は彼がアセンブリを正しく参照するだけでよいと思います。 - RPM1984
  • DataClasses1.dbmlは\にありますが、それを使用しようとしている.aspxは\ adamin \にあります。これはどのように解決できますか? - natiz
  • さて、adminフォルダにはWeb.configファイルがありません。 - natiz

5

アセンブリが既にプロジェクトによって参照されている場合でも、アセンブリをロードしようとしたときに.ASPXマークアップが原因で発生した場合に、このエラーが発生する可能性があります。先ほど述べたプロジェクト全体の解決策ここにアセンブリをweb.configのアセンブリのリストに追加します。assemblyコンパイル用要素例えば。

<compilation>
 <assemblies>
  <add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
  ...

ページごとの代替案は@アセンブリpage属性。ただし、これはすべてのページに追加する必要があり、ASP.NETランタイムは足りないアセンブリタイプを読み込もうとします。


1

どういう意味ですか "/フォルダにアクセスできますが、/ adminフォルダにアクセスするとこのエラーが発生します「?

どのフォルダにいるのかは変わりません。コンテキストは設定ファイル(例:web.config)の接続文字列を使用します。相対パスや絶対パスはここでは適用されません。これはコードであり、リソースではありません。

あなたのWebアプリケーションへの別々のアセンブリにあなたのデータコンテキストがありますか?

他のすべてのものと同様に、名前空間をインポートする必要があります。

例えば

using YourApplication.Data;


  • 私はそれを解決しました、私は名前空間WebApplication1を含めるのを忘れていました{..... ------しかし今新しいことが起こりました:CS0012:タイプ&#39; System.Data.Linq.DataContext&#39;参照されていないアセンブリで定義されています。アセンブリ&#39; System.Data.Linq、バージョン= 3.5.0.0、カルチャ=ニュートラル、PublicKeyToken = b77a5c561934e089&#39;への参照を追加する必要があります。 - natiz
  • さて、私の管理フォルダにはWeb.Configがありません。 - natiz
  • @NZIM - このエラーはあなたが参照する必要があることを意味しますSystem.Data.LinqあなたのWebアプリケーションで。追加 - &gt;参照 - &gt; System.Data.Linq。これは、UIでL2SQL操作を実行しているためです。 L2SQLコードをリポジトリの背後にカプセル化した場合は、この参照を追加する必要はありません。ただし、参照をに追加します。System.Data.Linq今のところ。 - RPM1984
  • web.configに関しては - 接続文字列を&quot;メイン&quot;に入力してください。 web.config(root)領域web.configはメインのweb.configを継承しているので、db接続を無効にしないでください(これはすべての領域に対してグローバルです)。 web.configの領域にあるべきものは(あるとしても)、名前空間登録のようなものだけです。 - RPM1984
  • System.Data.Linqを追加しましたが、現在は次のようになっています。CS0234:型または名前空間の名前&#39; Linq&#39;名前空間&#39; System.Data&#39;に存在しません。 (あなたはアセンブリ参照を見逃していますか?) - natiz

1

これと同じエラーメッセージが表示されただけです。 VS 2010の参照ダイアログを使用してプロジェクト内の参照をSystem.Data.Linqに追加することで解決しました。


  • これをやっても解決した、唯一の問題は、そもそもなぜそれが必要だったのか本当にわからないということだ。 - kad81

0

モデルに参照を追加します。 C#で

using ProjectName.Models;

それから次の行を追加Application_Start()ルーチンDatabase.SetInitializer<MyMVCTestContext>(null);(ここではMyMvcTestContextがあなたのデータコンテキスト名になります)

次のリストをチェックして、参照が欠落していないことを確認してください。あなたはそれらすべてを必要とするかもしれませんし、そうでないかもしれません。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using System.Web.ModelBinding;
using System.Data;
using System.Data.Entity;
using MyMVCTest.Models;


0

このプロジェクトがLinqToSqlプロジェクトで、データコンテキストが "DataClasses1DataContext"の場合、dbmlファイル名は "DataClasses1.dbml"になります。

.dbmlファイルIDが "MyLinqToSql.dbml"の場合、データコンテキスト名はMyLinqToSqlDataContextになります。

.dbmlファイル名を確認し、前述のようにdatabcontext名と一致させてください。

また、入力を始めると、IntelliSenseで自動的に名前が付けられます。


0

だから私のための修正は私がそれを使用しているフォルダにLINQTOSQLを追加することでした+ この内部をwebConfigファイルに追加します。

<system.web>
<compilation debug="false" targetFramework="4.0">
  <assemblies>
    <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
  </assemblies>
</compilation>


0

Webプロジェクトの[参照]ノードに移動します   System.Data.Linq VSプロパティウィンドウをプロパティで開きます。   ウィンドウで、Copy Local:FalseをTrueに変更します。   System.Data.Linq.dllがbinディレクトリにコピーされていませんでした。   (手動でbinディレクトリにコピーしてもエラーは解決しました)

から:https://stackoverflow.com/a/34356930/125938

リンクされた質問


関連する質問

最近の質問