헬러,이 오류가 발생합니다.
CS0246 : 'DataClasses1DataContext'형식 또는 네임 스페이스 이름을 찾을 수 없습니다 (사용 지시문 또는 어셈블리 참조가 누락 되었습니까?)
이 .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();
}
}
문제는 on / 폴더에 DB에 액세스 할 수 있지만 on / admin 폴더에이 오류가 발생합니다.
내가 뭘 잘못하고 있죠?
편집하다
CS0012 : 'System.Data.Linq.DataContext'형식이 참조되지 않은 어셈블리에 정의되어 있습니다. 어셈블리 'System.Data.Linq, Version = 3.5.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089'에 대한 참조를 추가해야합니다.
그게 무슨 뜻 이죠?
시작할 두 장소 :
편집하다
구성 문제 인 것 같습니다. 구성에서는 아마도 msl (모델) 파일이 현재 디렉토리에 있으며 루트 디렉토리에 있다고합니다. 따라서 루트에있을 때만 작동하지만 관리자에있을 때는 작동하지 않습니다.
만나다:Entity Framework 엔터티 연결을 사용할 때 MetadataException 발생비슷한 문제.
어셈블리가 프로젝트에서 이미 참조 된 경우에도 어셈블리를로드하려고하면 .ASPX 태그로 인해이 오류가 발생할 수 있습니다! 합격에서 언급 한 프로젝트 전체 솔루션이리web.config의 어셈블리 목록에 어셈블리를 추가하는 것입니다.assemblies 컴파일을위한 요소예 :
<compilation>
<assemblies>
<add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
...
페이지 별 대안은@ 어셈블리페이지 속성이 있지만 모든 페이지에 추가해야 ASP.NET 런타임이 누락 된 어셈블리 유형을로드하려고합니다.
너 무슨 뜻이야?on / folder DB에 액세스 할 수 있지만 / admin 폴더에서이 오류가 발생합니다."?
컨텍스트가 구성 파일 (예 : web.config)의 연결 문자열을 사용하는 폴더는 아무런 차이가 없습니다. 상대 경로 / 절대 경로는 여기에 적용되지 않습니다. 이것은 코드가 아니라 자원입니다.
웹 애플리케이션에 대한 별도의 어셈블리에 데이터 컨텍스트가 있습니까?
다른 모든 것과 마찬가지로 네임 스페이스를 가져와야합니다.
예 :
using YourApplication.Data;
System.Data.Linq
귀하의 웹 응용 프로그램에서. 추가 - & 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 Project이고 데이터 컨텍스트가 "DataClasses1DataContext"이면 dbml 파일 이름은 "DataClasses1.dbml"이어야합니다.
.dbml 파일 ID가 "MyLinqToSql.dbml"인 경우 datacontext 이름은 MyLinqToSqlDataContext 여야합니다.
위에서 설명한대로 .dbml 파일 이름을 확인하고 databcontext 이름과 일치하십시오.
또한 입력을 시작하면 IntelliSense에서 자동으로 이름을 얻습니다.
그래서 나를 위해 수정 LINQTOSQL 폴더에 어디에 내가 그것을 사용자 + webConfig 파일에 This Inside을 추가하십시오.
<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>
웹 프로젝트의 참조 노드로 이동 참조를 찾습니다. System.Data.Linq VS 속성 창 열기 속성 창, 변경 복사 로컬 : False로 True 전에이 System.Data.Linq.dll이 bin 디렉터리로 복사되지 않았습니다. (수동으로 bin 디렉토리에 복사해도 오류가 해결됨)