기본 멤버십 데이터베이스가있는 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 연결 문자열이지만 유효한 Entity Framework 연결 문자열이 아닙니다 .
EF 연결 문자열은 다음과 같습니다.
<connectionStrings>
<add name="NorthwindEntities" connectionString=
"metadata=.\Northwind.csdl|.\Northwind.ssdl|.\Northwind.msl;
provider=System.Data.SqlClient;
provider connection string="Data Source=SERVER\SQL2000;Initial Catalog=Northwind;Integrated Security=True;MultipleActiveResultSets=False""
providerName="System.Data.EntityClient" />
</connectionStrings>
EF 연결 문자열의 모든 metadata=
및 providerName=
요소 가 누락되었습니다. 기본적으로 provider connection string
부품에 포함 된 내용 만 있습니다 .
EDMX 디자이너를 사용하면 web.config 또는 app.config에서 유효한 EF 연결 문자열을 만들어야합니다.
마크
업데이트 : 좋아, 뭘 하려는지 이해합니다. ASP.NET 사용자 / 멤버십 데이터베이스에만 두 번째 “ADO.NET”연결 문자열이 필요합니다. 문자열은 정상이지만 providerName은 잘못되었습니다. “System.Data.SqlClient”여야합니다.이 연결은 ENtity Framework를 사용하지 않습니다. “EntityClient”를 지정하지 마십시오!
<add name="ASPNETMembership"
connectionString="Data Source=MONTGOMERY-DEV\SQLEXPRESS;Initial Catalog=ASPNETDB;Integrated Security=True;"
providerName="System.Data.SqlClient" />
providerName=System.Data.EntityClient
==> Entity Framework 연결 문자열 을 지정하는 경우 (메타 데이터 = 및 모든 항목 포함).
필요한 경우 providerName=System.Data.SqlClient
==> 모든 EF 추가없이 직선 ADO.NET SQL Server 연결 문자열을 지정합니다.
답변
이 문제는 색인별로 web.config (또는 app.config) 연결 문자열을 참조 할 때 발생할 수 있습니다.
var con = ConfigurationManager.ConnectionStrings[0].ConnectionString;
0 기반 연결 문자열은 기본적으로 스택의 상위에서 다른 항목을 상속 하므로 구성 파일의 연결 문자열이 항상있는 것은 아닙니다 .
권장되는 접근 방식은 이름으로 연결에 액세스하는 것입니다.
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 서버 연결을 EntityFrameWork 연결로 변경하지 않았을 때 발생했습니다.
해결책 : web.config 파일 “add name =” Entities “connectionString = XYZ”를 통해 연결되는 파일에서 올바른 연결을 참조하고 있는지 확인하십시오. 제 경우에는이 작업을 수행해야했습니다.
public static string MyEntityFrameworkConnection
{
get
{
return ConfigurationManager.ConnectionStrings["Entities"].ConnectionString;
}
}
연결이 필요할 때마다 MyEntityFrameworkConnection을 호출하십시오.
private string strConnection= Library.DataAccessLayer.DBfile.AdoSomething.MyEntityFrameworkConnection;
참고 : 솔루션에 엔티티 모델을 추가 할 때 web.config 파일의 연결이 자동으로 생성됩니다.
답변
나는 이것이 오래된 게시물이라는 것을 알고 있지만 최근에 동일한 오류가 발생했기 때문에 가치가있는 다른 해결책이 있습니다.
이것은 일반적으로 연결 문자열 오류입니다. 연결 문자열의 형식을 확인하세요. ‘엔티티 프레임 워크 연결 문자열’을 찾거나 위의 제안을 따를 수 있습니다.
그러나 제 경우에는 연결 문자열이 괜찮 았고 오류가 완전히 다른 이유로 인해 발생했기 때문에 누군가에게 도움이되기를 바랍니다.
-
먼저 EDMX 오류가 발생했습니다 . EDMX 에 새 데이터베이스 테이블이 있었고 테이블이 내 데이터베이스에 존재하지 않았습니다. Visual Studio의 ‘경고’아래 ‘오류 목록’창에 숨겨져있었습니다. 누락 된 테이블을 데이터베이스에 추가하여이 오류를 해결했습니다. 그러나 실제로 저장 프로 시저를 추가하려고 노력했지만 여전히 ‘데이터 소스’오류가 발생하므로 아래에서 해결 방법을 참조하십시오.
-
저장 프로 시저 오류 : 저장 프로 시저 를 추가하려고했는데 EDMX 디자인 창을 통해 추가 할 때마다 ‘데이터 소스’오류가 발생했습니다. 해결책은 저장 프로 시저를 공백으로 추가하는 것이 었습니다 (저장 프로 시저 이름과 선언은 유지했지만 저장 프로 시저의 내용을 삭제하고 ‘선택 1’로 바꾸고 EDMX에 다시 추가했습니다). 작동했습니다! 아마도 EF는 내 저장된 proc 내부를 좋아하지 않았습니다. EF에 proc을 추가하면 데이터베이스의 proc 내용을 내가 원하는대로 업데이트 할 수 있었고 작동하면 ‘datasource’오류가 해결되었습니다.
기이함
답변
동일한 오류가 발생하고 다음과 같이 연결 문자열을 업데이트했습니다.
<add name="EmployeeContext" connectionString="data source=*****;initial catalog=EmployeeDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
이것을 시도하면 문제가 해결됩니다.