模型优先使用DbContext,无法初始化新的数据库

时间:2011-05-09 17:55:59

标签: .net entity-framework entity-framework-4.1 ef-code-first ef-model-first

我放弃了。 我找到了这个: http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-model-amp-database-first-walkthrough.aspx 并且想,这很酷。 因此,我很快重新设计了我的模型,以充分利用两个世界的优势。

但是现在我的模型无法创建新数据库(或向现有数据库添加tabls)。 我收到这个错误:

  

如果在Code First模式下使用,使用T4模板为Database First和Model First开发生成的代码可能无法正常工作。要继续使用Database First或Model First,请确保在执行应用程序的配置文件中指定了Entity Framework连接字符串。要使用从Database First或Model First生成的这些类,使用Code First添加任何其他配置,使用属性或DbModelBuilder API,然后删除引发此异常的代码。

目前:

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }

那是我的连接字符串:

    <add name="ForumContextContainer"
 providerName="System.Data.SqlClient"
 connectionString="Data Source=.\SQLExpress; Initial Catalog=iForum; Integrated Security=True"/>

请注意。我稍后添加了初始目录,试试它是否能够正常工作,但它完全一样。

4 个答案:

答案 0 :(得分:32)

这是错误的连接字符串。一旦使用模型优先/数据库优先(EDMX),您必须使用Entity connection string引用.ssdl,.msl和.csdl元数据文件。还要注意,在从EDMX创建模型时,必须在设计时创建数据库=必须生成SQL脚本并执行它以创建数据库。

答案 1 :(得分:2)

我猜这个错误通常会在有人首先将EDMX / db添加到解决方案中的类库时出现。如果这样做,请确保在类库项目的App.config文件中添加的连接字符串在web.config或exe项目配置文件中可用(所以只需将其复制/粘贴)。

答案 2 :(得分:0)

Add this connection string to web config and make changes:

<add name="Entities" 
connectionString="
metadata=res://*/EFmodel.csdl|res://*/EFmodel.ssdl|res://*/EFmodel.msl;
provider=System.Data.SqlClient;provider 
connection string=&quot;
data source=SAI-PC;
initial catalog=OrderDB;
user id=sa;
password=Pass$123;
MultipleActiveResultSets=True;
App=EntityFramework&quot;" 
providerName="System.Data.EntityClient" />

EFmodel is my .edmx file name.

OrderDB is database name.

答案 3 :(得分:-1)

删除或评论此内容:

//protected override void OnModelCreating(DbModelBuilder modelBuilder)
//{
//    throw new UnintentionalCodeFirstException();
//}

将您的连接字符串更改为有效字符串。