programing

EF 4.1 예외 "공급자가 공급자 매니페스트를 반환하지 않았습니다.토큰 문자열"

testmans 2023. 6. 29. 19:53
반응형

EF 4.1 예외 "공급자가 공급자 매니페스트를 반환하지 않았습니다.토큰 문자열"

저는 MSDN에서 발견된 예제를 복제하려고 합니다.ASP.NET 및 EF 4.1(CTP?)을 사용하고 있습니다.EntityFramework 패키지를 설치하기 위해 NuGet을 사용했습니다.

오류가 합니다: 다음오발습니다했생가류.The provider did not return a ProviderManifestToken string데이터베이스는 생성되지 않습니다.

다음은 내 연결 문자열입니다.

<add name="HospitalContext"
   connectionString=
   "data source=.\SQLExpress;initial catalog=NewTestDB;integrated security=True;"
   providerName="System.Data.SqlClient"/>

내 코드는 다음과 같습니다.

var pat = new Patient { Name = "Shane123132524356436435234" };
db.Patients.Add(pat);

var labResult = new LabResult { Result = "bad", Patient = pat };

int recordAffected = db.SaveChanges();

제 맥락은 다음과 같습니다.

public class HospitalContext : DbContext
{
    static HospitalContext()
    {
        Database.SetInitializer(new HostpitalContextInitializer());
    }

    public DbSet<Patient> Patients { get; set; }
    public DbSet<LabResult> LabResults { get; set; }
}

public class HostpitalContextInitializer :
             DropCreateDatabaseIfModelChanges<HospitalContext>
{
    protected override void Seed(HospitalContext context)
    {
        context.Patients.Add(new Patient { Name = "Fred Peters" });
        context.Patients.Add(new Patient { Name = "John Smith" });
        context.Patients.Add(new Patient { Name = "Karen Fredricks" });
    }
}

이 시스템은 VS 2010 SP1이 포함된 완벽하게 패치된 SQL 2008 시스템입니다.

이 오류가 발생하여 이전 제안 중 몇 가지를 시도했습니다.그런 다음 Inner Exception(내부 예외)을 확인한 결과 사용자에 대한 간단한 SQL 로그인 오류가 발생했습니다.그냥 확인할 게 있어요

Visual Studio에서 잘못된 프로젝트의 app.config 내에 연결 문자열을 배치할 때 이 문제가 발생할 수 있습니다.

예를 들어 EF 4.1(릴리스 버전) 프로젝트 + WCF Data Service 프로젝트에서 이 문제가 발생했는데 이 문제가 사용 중인 Data Services 프로젝트에 지정된 연결 문자열이 없다는 것을 알게 되었습니다.

저도 같은 문제가 있었고, 제 컨텍스트의 인스턴스 바로 뒤에 아래 코드를 추가합니다(예시로 로드).

context.Database.Connection.ConnectionString = @"Data Source=.\SQLExpress;Initial Catalog=Test;Integrated Security=True";

저도 같은 오류를 겪고 있었는데, 사실은 지정된 서버에 대한 로그인 실패였습니다.구성 연결 문자열에서 "통합 보안" 특성을 제거했고 작동했습니다.

MvcMusicStore 앱에서도 비슷한 문제가 있었습니다.Web.config의 행을 "Instance=true"에서 "Instance=false"로 변경했습니다.때때로 이 수정 없이 작동하지만 무엇이 차이를 유발하는지 모르겠습니다.http://msdn.microsoft.com/en-us/library/ms254504.aspx 을 읽는 것은 별로 도움이 되지 않았습니다.

특정한 권한으로 인해 EF는 데이터베이스 연결을 만들 수 없습니다.저는 하루 종일 같은 문제에 직면했습니다.마지막으로 다음 솔루션을 시도해 보았는데 작동했습니다. a/ IIS 열기(I 사용 중) b/ 웹 사이트에서 사용하는 appool의 고급 설정 열기(예: DefaultAppPool) c/ 프로세스 모델 그룹을 보고 ID 값을 "로컬 시스템"으로 변경합니다.

잘 되길 바랍니다.

저도 같은 문제를 겪고 있었어요
저에게 효과적인 해결책은 다음과 같습니다.
도구Run)를 합니다.
TCP/IP가 활성화되었는지 확인합니다.

허가 때문이라고 생각하고 살짝 기러기를 쫓은 끝에 마침내 그것을 깨뜨렸습니다.

계시: SQL Profiler 사용

(참고: 최근에 EF6에서 EF5로 다운그레이드했습니다.)

SQL Profiler를 사용하여 보고된 오류가 발생하기 전에 마지막으로 실행된 SQL을 빠르게 발견했습니다.

SELECT TOP (1) 
[Project1].[C1] AS [C1], 
[Project1].[MigrationId] AS [MigrationId], 
[Project1].[Model] AS [Model]
FROM ( SELECT 
    [Extent1].[MigrationId] AS [MigrationId], 
    [Extent1].[Model] AS [Model], 
    1 AS [C1]
    FROM [dbo].[__MigrationHistory] AS [Extent1]
)  AS [Project1]
ORDER BY [Project1].[MigrationId] DESC

글쎄요, 이것을 보세요. 이주와 관련이 있습니다.들여다보고 있습니다__MigrationHistory테이블 - 테이블이 생성된 줄도 몰랐습니다(CSPROJ에서 마이그레이션을 이미 제거했습니다).

따라서 해당 테이블의 행을 끌어올려 해당 테이블이 특정 제품 버전(v6)과 연결되어 있음을 확인합니다.

enter image description here

저는 실제로 EF6(애초에 설치할 의도가 없었던)에서 EF5(비계와 더 호환되는)로 다운그레이드를 했고, 문제가 발생했을 때.

내 생각에는.Model (<Binary data>)열이 이전 버전과 호환되지 않습니다. 따라서The provider did not return a ProviderManifest instance디코딩할 수 없기 때문에 오류가 발생했습니다.

나는 잃을 것이 아무것도 없었고 그냥 이 테이블을 완전히 지우고 도망쳤습니다.Update-Database -Verbose다시 백업하고 실행했습니다.

고급 환경에 있거나 이미 운영 중인 경우에는 이 테이블을 지우는 것이 해결책이 아닐 수도 있지만, 이 방법을 사용하면 바로 업무에 복귀할 수 있습니다.

Visual Studio 11 베타를 EF4.1 및 ASP.NET MVC와 함께 사용할 때, 저는 발견할 때까지 거의 머리카락을 뽑았습니다.

http://connect.microsoft.com/VisualStudio/feedback/details/740623/asp-net-mvc-4-default-connection-string-improperly-escaped

문제를 해결하기 위해 Application_Start에 들어가서 변경했습니다.

데이터베이스.DefaultConnectionFactory = 새 SqlConnectionFactory("Data Source=(localdb)\v11.0; 통합 보안=참, 다중 활성 결과 집합 = 참";MultipleActiveResultSetstrueTrue";

로.

데이터베이스.DefaultConnectionFactory = 새 SqlConnectionFactory(@"Data Source=(localdb)\v11.0; 통합 보안=참, 다중 활성 결과 집합 = 참";MultipleActiveResultSetstrueTrue";

이 오류는 .edmx 파일이 열려 있는 동안에만 발생하며 파일이 다시 닫히자마자 사라집니다.

CodePlex의 이 인용문은 저와 함께 작동했습니다(Visual Studio 2013 /MVC 5).

EF Code First를 사용하는 경우 고려해야 할 또 다른 사항은 DbContext 클래스의 백업 데이터베이스가 자동으로 생성되지 않는 경우가 있다는 것입니다.해결책은 사용자 자신의 연결 문자열을 추가하는 것입니다. 이 연결 문자열을 사용하여 단순 구성원 자격 공급자를 지원하는 사용자/등록 데이터베이스를 템플릿으로 처리할 수 있습니다.마지막으로, 작성한 DbContext 클래스에 대한 기본 생성자를 추가해야 합니다.

public ChaletDb():base("ChaletConnection")
    {

    }

여기서 web.config 파일에 입력한 연결 문자열의 이름은 DBContext가 데이터베이스를 작성하도록 지시하는 데 사용됩니다.SQL Server Management Studio에서 데이터베이스를 수동으로 생성해야 하는 경우가 종종 있었습니다.

한 솔루션에 여러 프로젝트가 있고 각 프로젝트에 서로 다른 시간에 EF를 추가했습니다.일부 컴퓨터에서는 작동 중이었고 일부 컴퓨터에서는 앞서 언급한 오류로 인해 실패했습니다.제 프로젝트의 app.config 중 일부에 다음과 같은 기능이 있다는 것을 깨닫는 데 시간이 좀 걸렸습니다.

    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
  <parameters>
    <parameter value="v11.0" />
  </parameters>
</defaultConnectionFactory>

이것은 LocalDb("sql express"와 같은 새로운 "sql express")를 사용하는 경우에는 괜찮지만, 특정 서버가 설치되어 있지 않고 일반 SQL을 사용하는 경우에는 완전히 잘못된 것입니다.

솔루션:위의 코드를 제거합니다.

SQL 서버에 연결하지 못했기 때문입니다.

프로세스를 실행 중인 사용자 계정이 SQL 서버에 액세스할 수 있는지 확인합니다.

종속성 주입과 같이 상위 스레드에서 DbContext를 생성한 경우 다른 사용자를 가장하는 경우 이 오류가 발생합니다.해결책은 새 스레드 또는 새 가장 컨텍스트 내에서 DbContext를 생성하는 것입니다.

Visual Studio의 모든 인스턴스를 닫고 솔루션을 다시 열었습니다.

실제로 무슨 일이 일어났는지는 모르지만, 두 개의 서로 다른 로컬 작업 공간에서 동일한 솔루션을 열었습니다(하나는 로컬 변경 사항, 다른 하나는 변경되지 않은 저장소 소스 코드).저는 포스트그레스 DB, Entity Framework 6, Visual Studio 2013 및 ASP.NET MVC 5에서 일하고 있습니다.

엔티티 프레임워크에 오류가 있었지만 위의 답변 중 어느 것도 최종적으로 작동하는 솔루션에 적합하지 않았습니다.

나의 엔티티 프레임워크 코드 첫 번째 모델과 데이터 컨텍스트는 나의 WebAPI 메인 프로젝트와 별도의 프로젝트에 있었습니다.코딩 라인 아래 어딘가에 있는 내 엔터티 프레임워크 프로젝트가 시작 프로젝트로 설정되었기 때문에 마이그레이션을 실행할 때 "공급자가 공급자 매니페스트를 반환하지 않았습니다.토큰 문자열"... 연결 문제입니다.

DB에 대한 연결 문자열이 WebAPI Main 프로젝트의 Web.config 파일에 있기 때문에 마이그레이션을 실행할 때 연결 문자열이 검색되지 않았습니다.WebAPI 프로젝트를 시작 프로젝트로 설정하여 성공적으로 연결할 수 있었습니다.

언급URL : https://stackoverflow.com/questions/5423278/ef-4-1-exception-the-provider-did-not-return-a-providermanifesttoken-string

반응형