我放弃了。我发现这个:http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-model-amp-database-first-walkthrough.aspx并认为,这很酷。因此,我迅速重新设计了我的模型,以利用两全其美的优势。
但是现在我的模型无法创建新数据库(或将 tabls 添加到现有数据库)。我收到此错误:
如果在代码优先模式下使用,则使用用于数据库优先和模型优先开发的 T4 模板生成的代码可能无法正常工作。若要继续使用"数据库优先"或"模型优先",请确保在执行应用程序的配置文件中指定实体框架连接字符串。若要使用这些从"数据库优先"或"模型优先"生成的类,请使用"代码优先"添加使用属性或 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"/>
注意。我后来添加了初始目录,以尝试它是否可以工作,但它完全相同。
这是错误的连接字符串。使用模型优先/数据库优先 (EDMX) 后,必须将实体连接字符串与引用 .ssdl、.msl 和 .csdl 元数据文件一起使用。另请注意,从 EDMX 创建模型时,必须在设计时创建数据库 = 必须生成 SQL 脚本并执行它以创建数据库。
有人首先将 EDMX/db 添加到解决方案中的类库时,通常会出现此错误。如果这样做,请确保在类库项目的 App.config 文件中添加的连接字符串在 web.config 或 exe 项目配置文件中可用(因此只需将其复制/粘贴到此处)。
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.
删除或评论此内容:
//protected override void OnModelCreating(DbModelBuilder modelBuilder)
//{
// throw new UnintentionalCodeFirstException();
//}
并将连接字符串更改为有效的字符串。