在Entity Framework 4.0代码中首先找到.csdl,.ssdl和.msl文件的位置?

时间:2013-12-02 14:50:09

标签: c# entity-framework connection-string edmx vs-unit-testing-framework

我想使用Effort运行测试,为此我需要指定一个连接字符串,该连接字符串还包含对.csdl, .ssdl.msl文件的引用。 (非工作)连接字符串现在看起来像这样:

<add name="SQLAzureConnection" connectionString=
 "metadata=res://*/Model.projectContext.csdl|
res://*/Model.projectContext.ssdl|res://*/Model.projectContext.msl;
  provider=System.Data.SqlClient;
  provider connection string=&quot;Data Source=(LocalDb)\v11.0;Initial Catalog=Database_Nieuw;Integrated Security=false;MultipleActiveResultSets=False&quot;"
 providerName="System.Data.EntityClient" />

Model.projectContext部分错了,但我不知道应该是什么。

当我使用此字符串时,我在使用此连接字符串与Effort建立模拟数据库连接的测试中收到以下错误。

Test: failed
Result Message: Initialization method  
project.Tests.Controllers.ShoppingCartTest.Initialize threw exception. 
System.InvalidOperationException: System.InvalidOperationException: Resource res://*
/Model.seashell_brawl_corveeContext.csdl not found..

我不知道在哪里可以找到这个.csdl文件,我只知道这是必要的。我无法从我的.emdx文件中创建它们,因为我有一个代码优先的数据库,右键单击设计器并没有为Update database from model提供another question作为解决方案的选项。我还设置了Metadata Artifact Processing" option to "Embed in Output Assembly

有谁知道我在哪里可以找到这些文件以及如何正确引用它们?

/编辑:

好的,我现在很清楚,代码第一个项目中不存在这些文件。通过在注释中使用user20 ...的提示,连接字符串现在似乎可以正常工作。一个新问题如下:

`Test Outcome:  Failed  error 0040: The Type date is not qualified with a namespace or 
alias. Only primitive types can be used without qualification.` 

很奇怪,因为我到处都使用[DataType(DataType.DateTime)]。有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

正如user3038092所解释的那样:

  

使用Code First时,您没有.csdl,.ssdl和.msl。该   连接字符串也不同。基本上是正确的连接   string是所谓的“提供者连接字符串”   您当前的连接字符串

解决了这个问题。