this tutorial의 Scott-Guthrie와 Scott Hanselman의 Code-First와 같은 Entity Framework CTP를 사용했습니다 (링크를 게시 할 수는 없지만 Google의 "Simple Code First Entity Framework 4 - Magic Unicorn 기능 CTP 4 "). 이것은 주요 MVC 응용 프로그램에 완벽하게 작동하지만 이제는 별도의 SQL CE 데이터베이스를 사용하는 테스트 프로젝트를 추가하려고합니다. 그러나코드 - 첫 번째 엔터티 프레임 워크 - SQL CE 데이터베이스 생성 오류
<connectionStrings>
<add name="MyData"
connectionString="Data Source=D:\myProject\myDb.sdf;"
providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>
나는 그것이 데이터베이스 만들려고 다음과 같은 오류가 발생합니다 테스트를 실행하려고 :
테스트를
나는하여 app.config 파일에 다음을 추가 한 메서드 MyProjet.Tests.Administration.ModlelTests.Business.TestGetBusinessesList 던져 예외 : System.Reflection.TargetInvocationException : 에 의해 예외가 throw되었습니다.호출 대상입니다. ---> System.TypeInitializationException : 의 형식 이니셜 라이저 'System.Data.SqlServerCe.SqlCeProviderServices' 이 예외를 Throw했습니다. ---> System.Security.VerificationException : 작업으로 인해 런타임이 불안정해질 수 있습니다. 다음 스택 트레이스
:
System.Data.SqlServerCe.SqlCeProviderServices..ctor() System.Data.SqlServerCe.SqlCeProviderServices..cctor() System.RuntimeFieldHandle. GetValue (RtFieldInfo이 필드, 인스턴스를 객체, RuntimeType이 fieldType, RuntimeType이 declaringType, 부울 & domainInitialized) System.Reflection.RtFieldInfo.InternalGetValue (객체,451,515,OBJ, 부울 doVisibilityCheck, 부울 doCheckConsistency) System.Reflection.RtFieldInfo.InternalGetValue (객체 OBJ, 부울 doVisibilityCheck) System.Reflection.RtFieldInfo.GetValue (객체 OBJ) System.Data.SqlServerCe.ExtensionMethods.SystemDataSqlServerCeSqlCeProviderServices_Instance_GetValue () System.Data.SqlServerCe.ExtensionMethods.SystemDataSqlServerCeSqlCeProviderServices_Instance() System.Data.SqlServerCe.SqlCeProviderFactory.System.IServiceProvider.GetService (유형 ServiceType 자리) System.Data.Common.DbProviderServices.GetProviderServices (DbProviderFactory 공장) 시스템. Data.Comm on.DbProviderServices.GetProviderServices (DbConnection 연결) System.Data.Entity.ModelConfiguration.Internal.Configuration.CodeFirstCachedMetadataWorkspace.GetMetadataWorkspace (DbConnection storeConnection) System.Data.Entity.Infrastructure.DbModel.CreateObjectContext [TContext (DbConnection existingConnection) System.Data.Entity.Internal.LazyInternalContext.InitializeFromModel (DbModel 모델) System.Data.Entity.Internal.LazyInternalContext.InitializeContext() System.Data.Entity.Internal.InternalContext.Initialize() System.Data .Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType (유형 entityType) System.Data.Entity.Internal.Linq.EfInternalQuery
1.Initialize() System.Data.Entity.Internal.Linq.EfInternalQuery
1.Include (문자열 경로) System.Data.Entity.Infrastructure.DbQuery`1.Include (문자열 경로) MyProjet.Areas .Administration.Models.BusinessModel.GetBusinesses() D에가 : 라인 47 MyProjet.Tests.Administration.ModlelTests.Business.TestGetBusinessesList() : \ projects2010 \ MyProjet \ MyProjet 지역 \ \ 관리 \ 모델 BusinessModel.cs을 \ D : \ projects2010 \ MyProjet \ MyProjet.Tests \ Administration \ ModlelTests \ Business.cs : 줄 45
MVC 응용 프로그램에서 기존 MyData 연결 문자열을 바꾸려고 시도했지만 정상적으로 작동합니다. 이 문제가 테스트 프로젝트에 추가 될 때만이 문제가 발생합니다. 또한 테스트 프로젝트는 SQL 또는 SQL Express 데이터베이스를 가리킬 때 문제없이 작동합니다.
잠시 동안이 문제로 어려움을 겪어 왔지만 그 사실을 알 수 없습니다. 나는 단순한 것을 간과했다고 확신한다.
Database.DefaultConnectionFactory = new SqlCeConnectionFactory("System.Data.SqlServerCe.4.0");
를 사용
'System.Security.VerificationException : 작동으로 인해 런타임이 불안정해질 수 있습니다 .' 대부분 발생하지 않아야합니다. 이것은 공급자의 버그 일 수 있습니다. –
안녕하세요 크레이그, 답변 해 주셔서 감사합니다. 업데이트 소식을 기다려야 할 것 같습니다. 나는 평균 시간에 해결책을 찾으면 게시 할 것입니다. –
@ Jag의 코드가 작동하더라도 버그에 대한 연결 보고서를 제출하는 것이 좋습니다. –