6

我已经使用 EF 一段时间了,始终采用Model-First方法。现在我在Code-First 的土地上冒险。问题是:我一直遇到自动表创建问题。

根据一些网站,这是可能的。我已经尝试过他们的方法,但没有成功。

这是我尝试过的事情之一:Database.CreateIfNotExists()

没运气...

我的连接字符串完美且有效。如果我手动添加表格,它确实有效。问题是当我没有创建表时。它只是不像我所说的那样创造。

我的课程装饰正确。(再次:当我创建数据库时它正在工作)

有什么建议么?这个功能真的有用吗?

我在用着:

Visual Studio 2010 专业版

EntityFramework 4.3.1(虽然我也试过 4.1)

SQL Server 2008 R2

提前致谢。

4

1 回答 1

8

实体框架中包含三个数据库初始化程序,它们都实现了IDatabaseInitializer<Context>接口。他们是:

  • CreateDatabaseIfNotExist(默认)
  • DropCreateDatabaseWhenModelChanges
  • DropCreateDatabaseAlways

如您所见,默认 API 没有只创建表的初始化程序,而是创建整个数据库。但是,人们还创建了其他初始化程序,其中有一个可以完成您想要的完全相同的事情。

它在 Nuget 包中EFCodeFirst.CreateTablesOnly

如果这是您真正需要的,另一种选择是创建您自己的初始化程序。

于 2012-04-03T04:57:06.323 回答