代码之家  ›  专栏  ›  技术社区  ›  Giles Smith

代码优先实体框架-创建SQL CE DB时出错

  •  3
  • Giles Smith  · 技术社区  · 14 年前

    我一直在使用实体框架CTP,首先使用代码,如 this tutorial

    我已将以下内容添加到App.Config文件中:

    <connectionStrings>
        <add name="MyData"
            connectionString="Data Source=D:\myProject\myDb.sdf;"
            providerName="System.Data.SqlServerCe.4.0" />
    </connectionStrings>
    

    但是,当我尝试运行测试时,它在尝试创建数据库时抛出以下错误:

    试验方法 MyProjet.Tests.Administration.ModlelTests.Business.testgetbusinesses列表 System.Reflection.TargetInvocationException异常: 调用的目标---&燃气轮机; System.TypeInitialization异常: 的类型初始值设定项 System.Security.VerificationException异常: 操作可能会破坏系统的稳定 运行时。

    具有以下堆栈跟踪:

    System.Data.SqlServerCe.SqlCeProviderServices..ctor() System.Data.SqlServerCe.SqlCeProviderServices..cctor() System.RuntimeFieldHandle.GetValue(RtFieldInfo 字段,对象实例,RuntimeType fieldType,RuntimeType declaringType, 布尔值(&P);域(已初始化) obj,布尔doVisibilityCheck, System.Reflection.RtFieldInfo.GetValue(对象 System.Data.SqlServerCe.ExtensionMethods.SystemDataSqlServerCeSqlCeProviderServices\u Instance\u GetValue() System.Data.SqlServerCe.ExtensionMethods.SystemDataSqlServerCeSqlCeProviderServices\u实例() 服务类型) System.Data.Common.DbProviderServices.GetProviderServices(DbProviderFactory) (工厂) (连接) System.Data.Entity.ModelConfiguration.Internal.Configuration.CodeFirstCachedMetadataWorkspace.GetMetadataWorkspace(数据库连接 存储连接) System.Data.Entity.Infrastructure.DbModel.CreateObjectContext[TContext](数据库连接 现有连接) 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(类型 实体类型) System.Data.Entity.Internal.Linq.EfInternalQuery 1.Initialize() System.Data.Entity.Internal.Linq.EfInternalQuery 1.包含(字符串) 路径) System.Data.Entity.Infrastructure.DbQuery`1.Include(字符串 路径) MyProjet.Areas.Administration.Models.BusinessModel.GetBusinesses() 第47行 MyProjet.Tests.Administration.ModlelTests.Business.testGetBusinessList() D:\projects2010\MyProjet\MyProjet.Tests\Administration\ModlelTests\Business.cs: 第45行

    我尝试过替换MVC应用程序中现有的MyData连接字符串,效果很好。只有将其添加到测试项目时,才会导致此问题。此外,当指向SQL或sqlexpress数据库时,测试项目可以正常工作。

    我已经为此挣扎了一段时间,只是想不通。我肯定我忽略了一些简单的事情。

    2 回复  |  直到 14 年前
        1
  •  4
  •   Jag Reehal    14 年前

    尝试使用

    Database.DefaultConnectionFactory = new SqlCeConnectionFactory("System.Data.SqlServerCe.4.0");

    请参阅我的博客文章以获取示例 http://www.arrangeactassert.com/code-first-entity-framework-unit-test-examples/

        2
  •  0
  •   Giles Smith    14 年前

    看来SqlServerCe和VisualStudio之间有冲突 Unit Testing Framework .