我放弃了。 我找到了这个: 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"/>
请注意。我稍后添加了初始目录,试试它是否能够正常工作,但它完全一样。
答案 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="
data source=SAI-PC;
initial catalog=OrderDB;
user id=sa;
password=Pass$123;
MultipleActiveResultSets=True;
App=EntityFramework""
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();
//}
将您的连接字符串更改为有效字符串。