카테고리 보관물: C#

C#

애플리케이션 구성 파일에서 ‘MyEntities’라는 연결 문자열을 찾을 수 없습니다. 문제는 ‘MyEntites’DbContext를 사용하려고

엔터티 프레임 워크와 ASP.NET MVC 4를 사용하여 응용 프로그램을 작성하고 있습니다.

내 솔루션은 두 개의 프로젝트로 나뉩니다.

  • 내 데이터 모델 (.edmx) 파일과 몇 가지 사용자 정의 인터페이스가 포함 된 클래스 라이브러리
  • 위의 클래스 라이브러리를 참조하는 ‘컨테이너’MVC 프로젝트

내 문제는 ‘MyEntites’DbContext를 사용하려고 하면 다음 오류가 발생 한다는 것입니다.

애플리케이션 구성 파일에서 ‘MyEntities’라는 연결 문자열을 찾을 수 없습니다.

문제는 연결 문자열이 MVC 프로젝트가 아닌 클래스 라이브러리의 app.config 내에 있다는 사실과 관련이 있다고 생각합니다.

누구든지 제안이 있습니까?



답변

연결 문자열을 MVC 프로젝트의 .config 파일로 복사하십시오.


답변

그렇습니다. 클래스 라이브러리 (.edmx 파일)가 시작 / 주 프로젝트가 아니기 때문입니다.

연결 문자열을 기본 프로젝트 구성 파일에 복사해야합니다.

시작 / 기본 프로젝트에 구성 파일이없는 경우 (내 콘솔 응용 프로그램의 경우와 같이) 하나만 추가하십시오 (시작 프로젝트-새 항목 추가-> 응용 프로그램 구성 파일).

더 관련 정보는 여기에서 찾을 수 있습니다 :
MetadataException : 지정된 메타 데이터 리소스를로드 할 수 없습니다


답변

DbContext를 사용하여 프로젝트를 시작으로 설정하십시오.

프로젝트를 마우스 오른쪽 버튼으로 클릭하고 선택하십시오.

또는

app.config (또는 web.config)에서 연결 문자열이 시작되도록 설정된 프로젝트에 추가

또는

이런 식으로 명령을 호출

Update-Database -Script -ProjectName '<project name>' -StartupProjectName '<project name>' -ConnectionString 'data source=.;initial catalog=<db name>;integrated security=True;MultipleActiveResultSets=True' -ConnectionProviderName 'System.Data.SqlClient'

그런 다음 다시 시도하십시오


답변

연결 문자열을 전달하고 EntityFramework인생을 시작할 수 있습니다.

public partial class UtilityContext : DbContext
{
    static UtilityContext()
    {
        Database.SetInitializer<UtilityContext>(null);
    }

    public UtilityContext()
        : base("Data Source=SERVER;Initial Catalog=DATABASE;Persist Security Info=True;User ID=USERNAME;Password=PASSWORD;MultipleActiveResultSets=True")
    {
    }

    // DbSet, OnModelCreating, etc...
}


답변

예상 한대로, 클래스 라이브러리의 app.config에있는 연결 문자열과 관련이 있습니다.

app.config 클래스에서 컨테이너 app.config또는 web.config파일로 항목을 복사 하십시오.


답변

솔루션에 여러 프로젝트가있는 경우 진실 App.config가있는 곳에서 프로젝트를 시작으로 설정하십시오.


답변

“프로젝트로 설정”으로 설정된 프로젝트에 연결 문자열 app.config또는 web.config파일 을 복사 StartUp하고 데이터 계층 프로젝트에서 엔티티 프레임 워크를 사용하는 경우 주 프로젝트에 엔티티 프레임 워크 너겟 을 설치하십시오 .