实体框架代码第一个DbContext在编译期间检查ConnectionString?

时间:2011-09-29 13:44:08

标签: entity-framework ef-code-first connection-string wcf-ria-services code-first

似乎Code First DbContext在编译期间确实使用了给定的ConnectionString?我甚至不知道这是怎么可能的,但对我来说似乎是这样。如果我关闭我的本地SQL Server,我收到错误,指出“无法获取DbContext类型的MetadataWorkspace ...”。打开SQL Server,一切都编译好了。

这是我的上下文的一部分(我使用的是现有的数据库,是的,我知道,实际上并不是第一个代码)

public class MyContext : DbContext
{
    public MyContext() : base("MY_DYNAMIC_CONNECTIONSTRING")
    {
        Database.SetInitializer<MyContext>(null);
    }
    ...

如果确实如此,那就是一个很大的问题。我怎么能阻止它呢?如果我使用ConnectionString不起作用的单独构建机器怎么办?或者我做错了什么?有什么建议吗?

2 个答案:

答案 0 :(得分:6)

WCF RIA Services在设计时和构建时实例化DbContext,不仅仅是在运行时:

引自http://jeffhandley.com/archive/2011/06/30/RIAServicesCodeFirst.aspx

  

为了在Silverlight项目中生成代码,RIA Services   必须在构建时检查您的DbContext以获取实体   可用的类型。

来自http://varunpuranik.wordpress.com/2011/06/29/wcf-ria-services-support-for-ef-4-1-and-ef-code-first/#comment-102

  

EF CodeFirst独立与RIA服务之间的区别   是我们在设计时初始化一个新的DbContext。

如果连接字符串无效或无法建立连接,则显然会出现您提到的异常。

答案 1 :(得分:1)

以下是我用来跟踪“无法获取DbContext类型'{type}'的元数据工作空间”的根本原因的错误:

http://joshmouch.wordpress.com/2011/11/09/failed-to-get-the-metadataworkspace-for-the-dbcontext-type-type/

我知道它没有具体回答您的问题,但它可以帮助其他搜索Google的错误消息。