0

我希望有人可以帮助我,我创建了一个 Code First EF MVC4 项目。有了这个,我使用了 Seed 方法和使用 DropCreateDatabaseAlways 的 DbInitializer 将数据插入到数据库中。然而,根据 Asp.Net 网站,您必须在发布时删除所有为数据库提供种子的代码。

我的问题是,如果我不能使用 Seed 方法而不每次都添加它,即一次性添加,我该如何将数据添加到数据库中(通过与 Seed 方法中相同的过程)。除了通过 Database Explorer 或 SQL Server Management Studio 添加到数据库之外,我别无选择?

另外是否值得创建第二个 DbInitializer 以便我有一个用于测试和一个用于发布,因为我不想删除所有种子代码?

4

1 回答 1

0

我们的方法是将您的开发环境连接到空的实时数据库,运行 create 和 seed 方法,然后编辑您的代码以删除它们,然后再推送到应用服务器,并适当地减少数据库权限。

如果您不能这样做,因为您的 DBA 不允许这样做,另一种方法是在开发服务器上创建一个完整的原始数据库,其中包含种子数据,然后让 DBA 备份并将数据库恢复到实时环境。

本质上,是的,将创建和种子代码留在您的实时应用程序中并不是一个好主意,但仍有一些方法可以使用代码优先方法来制作和种子您的实时数据库。

我也会考虑使用迁移。这些提供与代码优先方法相同的所有功能,但具有更精细的控制和更少的权限要求。

于 2012-12-05T13:30:39.990 回答