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)과 연결되어 있음을 확인합니다.
저는 실제로 EF6(애초에 설치할 의도가 없었던)에서 EF5(비계와 더 호환되는)로 다운그레이드를 했고, 문제가 발생했을 때.
내 생각에는.Model (<Binary data>)
열이 이전 버전과 호환되지 않습니다. 따라서The provider did not return a ProviderManifest instance
디코딩할 수 없기 때문에 오류가 발생했습니다.
나는 잃을 것이 아무것도 없었고 그냥 이 테이블을 완전히 지우고 도망쳤습니다.Update-Database -Verbose
다시 백업하고 실행했습니다.
고급 환경에 있거나 이미 운영 중인 경우에는 이 테이블을 지우는 것이 해결책이 아닐 수도 있지만, 이 방법을 사용하면 바로 업무에 복귀할 수 있습니다.
Visual Studio 11 베타를 EF4.1 및 ASP.NET MVC와 함께 사용할 때, 저는 발견할 때까지 거의 머리카락을 뽑았습니다.
문제를 해결하기 위해 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
'programing' 카테고리의 다른 글
Git 구성을 저장소의 일부로 저장하는 방법은 무엇입니까? (0) | 2023.06.29 |
---|---|
더 이상 존재하지 않는 원격 분기를 표시하는 'git branch -av' (0) | 2023.06.29 |
PHP+MongoDB: 'No sheat file or directory' 메시지와 함께 'MongoCursorException'이(가) 발견되지 않았습니다. (0) | 2023.06.29 |
bin과 gac 둘 다 dll, 어떤 것이 사용됩니까? (0) | 2023.06.24 |
Oracle은 단락 평가를 사용합니까? (0) | 2023.06.24 |