문제

기본 멤버십 데이터베이스가있는 ASP.NET-MVC 응용 프로그램이 있습니다. Ado.net Entity Framework에서 액세스하고 있습니다.

이제 IIS로 옮기고 싶지만 몇 가지 문제가 나타났습니다. SQL Server Management Studio를 설치하고 새 DB를 만들고 이전 .MDF 파일에서 모든 데이터를 가져와야했습니다. (내가 아는 한)해야 할 일만 연결 문자열로 변경하는 것입니다. 그러나 나는 이것에 대해 실제로 경험이 없으며 '데이터 소스'라는 키워드를 계속 얻습니다. 예외. 내 연결 문자열은 다음과 같습니다.

<add name="ASPNETDBEntities" 
     connectionString="Data Source=MONTGOMERY-DEV\SQLEXPRESS;Initial Catalog=ASPNETDB;Integrated Security=True;" 
     providerName="System.Data.EntityClient" />

어떤 아이디어, 무엇이 잘못 되었습니까?

도움이 되었습니까?

해결책

당신이 가진 것은 유효한 ado.net 연결 문자열입니다. 아니다 유효한 엔티티 프레임 워크 연결 문자열.

EF 연결 문자열은 다음과 같습니다.

<connectionStrings> 
  <add name="NorthwindEntities" connectionString=
     "metadata=.\Northwind.csdl|.\Northwind.ssdl|.\Northwind.msl;
      provider=System.Data.SqlClient;
      provider connection string=&quot;Data Source=SERVER\SQL2000;Initial Catalog=Northwind;Integrated Security=True;MultipleActiveResultSets=False&quot;" 
      providerName="System.Data.EntityClient" /> 
</connectionStrings>

당신은 모든 것을 놓치고 있습니다 metadata= 그리고 providerName= EF 연결 문자열의 요소 ...... 기본적으로 포함 된 것만 있습니다. provider connection string 부분.

EDMX 디자이너를 사용하면 web.config 또는 app.config에서 유효한 EF 연결 문자열을 만들어야합니다.

마크

업데이트 : 좋아요, 당신이하려는 일을 이해합니다. asp.net 사용자 / 멤버십 데이터베이스에 대한 두 번째 "ado.net"연결 문자열이 필요합니다. 문자열은 정상이지만 제공자 이름은 잘못되었습니다. "System.Data.sqlClient"여야합니다.

<add name="ASPNETMembership" 
     connectionString="Data Source=MONTGOMERY-DEV\SQLEXPRESS;Initial Catalog=ASPNETDB;Integrated Security=True;" 
     providerName="System.Data.SqlClient" />

지정하는 경우 providerName=System.Data.EntityClient ==> 엔티티 프레임 워크 연결 문자열 (메타 데이터 및 모든 것).

필요하고 지정하는 경우 providerName=System.Data.SqlClient ==> 스트레이트 ado.net 모든 EF 추가가없는 SQL Server 연결 문자열

다른 팁

이 문제는 web.config (또는 app.config) 연결 문자열을 인덱스별로 참조 할 때 발생할 수 있습니다.

var con = ConfigurationManager.ConnectionStrings[0].ConnectionString;

제로 기반 연결 문자열이 항상 구성 파일에있는 것은 아닙니다. 기본적으로 스택을 더 이상 상속합니다.

권장 접근법은 이름으로 연결에 액세스하는 것입니다 ...

var con = ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;

또는 구성 파일에서 ConnnectionStrings 요소를 먼저 지우려면 ...

<connectionStrings>
    <clear/>
    <add name="MyConnection" connectionString="...

나는 같은 문제를 겪고 있었다.
그러나이 코드는 잘 작동합니다.

<add name="MyCon" connectionString="Server=****;initial catalog=PortalDb;user id=**;password=**;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />

Entity Framework를 사용하기 시작했을 때이 문제가 있었는데 이전 SQL Server 연결을 EntityFramework 연결로 변경하지 않았을 때 발생했습니다.

솔루션 : web.config 파일 "add name ="을 통해 연결된 파일에서엔티티"ConnectionString = xyz", 올바른 연결을 참조하고 있는지 확인하십시오. 제 경우에는이 작업을 수행해야했습니다.

        public static string MyEntityFrameworkConnection
    {
        get
        {
             return ConfigurationManager.ConnectionStrings["Entities"].ConnectionString;
        }

    }

연결을 설정해야 할 때마다 MyEntityFrameworkConnection에 전화하십시오.

private string strConnection= Library.DataAccessLayer.DBfile.AdoSomething.MyEntityFrameworkConnection;

참고 : 솔루션에 엔티티 모델을 추가 할 때는 web.config 파일의 연결이 자동으로 생성됩니다.

나는 이것이 오래된 게시물이라는 것을 알고 있지만 최근에 같은 오류가 있었기 때문에 그 가치가있는 것에 대해 다른 해결책이 있습니다.

이것은 일반적으로 연결 문자열 오류입니다. 연결 문자열의 형식을 확인하고 'Entity Framework ConnectionString'을 찾거나 위의 제안을 따라갈 수 있습니다.

그러나 내 경우에는 내 연결 문자열이 정상이었고 오류는 완전히 다른 것에 의해 야기되었으므로 이것이 누군가를 돕기를 바랍니다.

  1. 먼저 EDMX 오류가 발생했습니다: EDMX에 새 데이터베이스 테이블이 있었고 데이터베이스에 테이블이 존재하지 않았습니다 (재미있는 것은 EDMX 나 출력 창에 표시되지 않았기 때문에 오류가 명백하지 않은 오류입니다. '경고'아래의 '오류 목록'창에 스튜디오). 누락 된 테이블을 데이터베이스에 추가 하여이 오류를 해결했습니다. 그러나 실제로 저장된 절차를 추가하려고 노력하고 여전히 'DataSource'오류를 얻으려고 했으므로 아래에서 어떻게 해결했는지 아래를 참조하십시오.

  2. 저장 프로 시저 오류: 저장된 절차를 추가하려고했고 EDMX 디자인 창을 통해 추가 할 때마다 'DataSource'오류가 발생했습니다. 솔루션은 저장된 절차를 공백으로 추가하는 것이 었습니다 (저장된 Proc 이름과 선언을 유지했지만 저장된 Proc의 내용을 삭제하고 'Select 1'으로 교체하고 edmx에 추가했습니다). 효과가 있었다! 아마도 EF는 내 저장된 Proc 내부에 무언가를 좋아하지 않았을 것입니다. 일단 Proc를 EF에 추가 한 후 데이터베이스의 Proc의 내용을 내가 원하는대로 업데이트 할 수 있었고 'DataSource'오류가 해결되었습니다.

이상함

같은 오류가 발생한 후 아래와 같이 연결 문자열을 업데이트했습니다.

<add name="EmployeeContext" connectionString="data source=*****;initial catalog=EmployeeDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />

이 문제를 시도해보십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top