6

헬러,이 오류가 발생합니다.

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'에 대한 참조를 추가해야합니다.

그게 무슨 뜻 이죠?


  • 최신 오류를 해결하기위한 내 의견을 참조하십시오. - RPM1984

8 답변


5

시작할 두 장소 :

  • DataClasses1DataContext가 들어있는 dll은 어디에 있습니까? 하나의 폴더에서 다른 폴더가 아닌 다른 폴더로 이동할 수있는 이유가 있습니까?
  • 루트 구성 파일에 설정된 값을 무시하는 구성 파일이 관리 폴더에 있습니까?

편집하다

구성 문제 인 것 같습니다. 구성에서는 아마도 msl (모델) 파일이 현재 디렉토리에 있으며 루트 디렉토리에 있다고합니다. 따라서 루트에있을 때만 작동하지만 관리자에있을 때는 작동하지 않습니다.

만나다:Entity Framework 엔터티 연결을 사용할 때 MetadataException 발생비슷한 문제.


  • 그것은컴파일러 오류그가 얻는 것은 런타임이 아닙니다. 즉 상대 경로 / 절대 경로 또는 구성 (런타임 오류의 원인)과는 아무런 관련이 없음을 의미합니다. 어셈블리를 올바르게 참조해야한다고 생각합니다. - RPM1984
  • DataClasses1.dbml은 \에 있지만 사용하려고하는 .aspx는 \ adamin \에 있습니다. 어떻게이게 해결 될 수 있니? - natiz
  • admin 폴더에 Web.config 파일이 없습니까? - natiz

5

어셈블리가 프로젝트에서 이미 참조 된 경우에도 어셈블리를로드하려고하면 .ASPX 태그로 인해이 오류가 발생할 수 있습니다! 합격에서 언급 한 프로젝트 전체 솔루션이리web.config의 어셈블리 목록에 어셈블리를 추가하는 것입니다.assemblies 컴파일을위한 요소예 :

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

페이지 별 대안은@ 어셈블리페이지 속성이 있지만 모든 페이지에 추가해야 ASP.NET 런타임이 누락 된 어셈블리 유형을로드하려고합니다.


1

너 무슨 뜻이야?on / folder DB에 액세스 할 수 있지만 / admin 폴더에서이 오류가 발생합니다."?

컨텍스트가 구성 파일 (예 : web.config)의 연결 문자열을 사용하는 폴더는 아무런 차이가 없습니다. 상대 경로 / 절대 경로는 여기에 적용되지 않습니다. 이것은 코드가 아니라 자원입니다.

웹 애플리케이션에 대한 별도의 어셈블리에 데이터 컨텍스트가 있습니까?

다른 모든 것과 마찬가지로 네임 스페이스를 가져와야합니다.

예 :

using YourApplication.Data;


  • 그 중 하나를 해결, 네임 스페이스 WebApplication1 {..... ------ 포함하는 것을 잊었지만 지금은 새로운 일이 생겼습니다 : CS0012 : 유형 & # 39; System.Data.Linq.DataContext & # 39; 참조되지 않은 어셈블리에 정의되어 있습니다. 어셈블리의 System.Data.Linq, Version = 3.5.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089 & # 39;에 대한 참조를 추가해야합니다. - natiz
  • 내 Admin 폴더에 Web.Config가 없습니다. - natiz
  • @ NZIM - 오류는 참조해야 함을 의미합니다.System.Data.Linq귀하의 웹 응용 프로그램에서. 추가 - & gt; 참조 - & gt; System.Data.Linq. 이는 UI에서 L2SQL 작업을 수행하기 때문입니다. 저장소 뒤에 L2SQL 코드를 캡슐화했다면이 참조를 추가 할 필요가 없습니다. 그러나 참조를System.Data.Linq지금 당장. - RPM1984
  • web.config와 마찬가지로 - 연결 문자열을 & quot; 주 & quot; web.config (루트). web.config 영역은 기본 web.config에서 상속되므로 db 연결을 ovverride하면 안됩니다 (모든 영역에서 전역 적입니다). web.config (있는 경우) 영역에 있어야하는 유일한 것은 네임 스페이스 등록과 같은 것입니다. - RPM1984
  • System.Data.Linq를 추가했으나 이제는 다음과 같습니다. CS0234 : 형식 또는 네임 스페이스 이름 인 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 Project이고 데이터 컨텍스트가 "DataClasses1DataContext"이면 dbml 파일 이름은 "DataClasses1.dbml"이어야합니다.

.dbml 파일 ID가 "MyLinqToSql.dbml"인 경우 datacontext 이름은 MyLinqToSqlDataContext 여야합니다.

위에서 설명한대로 .dbml 파일 이름을 확인하고 databcontext 이름과 일치하십시오.

또한 입력을 시작하면 IntelliSense에서 자동으로 이름을 얻습니다.


0

그래서 나를 위해 수정 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>


0

웹 프로젝트의 참조 노드로 이동 참조를 찾습니다.   System.Data.Linq VS 속성 창 열기 속성   창, 변경 복사 로컬 : False로 True 전에이   System.Data.Linq.dll이 bin 디렉터리로 복사되지 않았습니다.   (수동으로 bin 디렉토리에 복사해도 오류가 해결됨)

에서:https://stackoverflow.com/a/34356930/125938

연결된 질문


관련된 질문

최근 질문