我最近一直围绕着UnitOfWork和Repository模式。我终于想出了一个适合我案例的解决方案,很棒。现在我想在我的应用程序中添加一些测试,以确保我的存储库按预期执行。在阅读并重读了关于这个主题的多篇文章之后,我得出的结论是,我想使用SQL Server CE为我的测试伪造数据库,至少从一开始,我可以测试Linq-to-Entities查询。
我已经为我的测试项目设置了app.config:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
<parameters>
<parameter value="System.Data.SqlServerCe.4.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlServerCe.4.0"
type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" />
但是,当我尝试在我的测试设置中创建数据库时,我得到一个例外:
Proj1.Test.Persistence.Product: : EntityType 'Product' has no key defined. Define the key for this EntityType.
我认为这是因为模型上没有属性,说哪个值是关键,因为我使用数据库第一种方法。
我已经阅读了几个与此相关的SO问题,但似乎没有一个问题符合我的要求。所以我的问题是,是否可以配置SQL CE来为测试创建数据库,即使我的模型是数据库优先?