こんにちは、私はこのエラーが出ます:
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'への参照を追加する必要があります。
どういう意味ですか?
開始する場所はいくつかあります。
編集する
これは構成上の問題のようです。 configはおそらくmsl(モデル)ファイルは現在のディレクトリにあり、それはルートディレクトリにあると言っています。したがって、rootになっているときは機能しますが、adminになっているときは機能しません。
見る:Entity Framework Entity Connectionを使用するとMetadataExceptionが発生する同様の問題のために。
アセンブリが既にプロジェクトによって参照されている場合でも、アセンブリをロードしようとしたときに.ASPXマークアップが原因で発生した場合に、このエラーが発生する可能性があります。先ほど述べたプロジェクト全体の解決策ここにアセンブリをweb.configのアセンブリのリストに追加します。assemblyコンパイル用要素例えば。
<compilation>
<assemblies>
<add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
...
ページごとの代替案は@アセンブリpage属性。ただし、これはすべてのページに追加する必要があり、ASP.NETランタイムは足りないアセンブリタイプを読み込もうとします。
どういう意味ですか "/フォルダにアクセスできますが、/ adminフォルダにアクセスするとこのエラーが発生します「?
どのフォルダにいるのかは変わりません。コンテキストは設定ファイル(例:web.config)の接続文字列を使用します。相対パスや絶対パスはここでは適用されません。これはコードであり、リソースではありません。
あなたのWebアプリケーションへの別々のアセンブリにあなたのデータコンテキストがありますか?
他のすべてのものと同様に、名前空間をインポートする必要があります。
例えば
using YourApplication.Data;
System.Data.Linq
あなたのWebアプリケーションで。追加 - &gt;参照 - &gt; System.Data.Linq。これは、UIでL2SQL操作を実行しているためです。 L2SQLコードをリポジトリの背後にカプセル化した場合は、この参照を追加する必要はありません。ただし、参照をに追加します。System.Data.Linq
今のところ。 - RPM1984
これと同じエラーメッセージが表示されただけです。 VS 2010の参照ダイアログを使用してプロジェクト内の参照をSystem.Data.Linqに追加することで解決しました。
モデルに参照を追加します。 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;
このプロジェクトがLinqToSqlプロジェクトで、データコンテキストが "DataClasses1DataContext"の場合、dbmlファイル名は "DataClasses1.dbml"になります。
.dbmlファイルIDが "MyLinqToSql.dbml"の場合、データコンテキスト名はMyLinqToSqlDataContextになります。
.dbmlファイル名を確認し、前述のようにdatabcontext名と一致させてください。
また、入力を始めると、IntelliSenseで自動的に名前が付けられます。
だから私のための修正は私がそれを使用しているフォルダに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>
Webプロジェクトの[参照]ノードに移動します System.Data.Linq VSプロパティウィンドウをプロパティで開きます。 ウィンドウで、Copy Local:FalseをTrueに変更します。 System.Data.Linq.dllがbinディレクトリにコピーされていませんでした。 (手動でbinディレクトリにコピーしてもエラーは解決しました)