Asp.net MVC4实体框架和种子混淆

Asp.net MVC4实体框架和种子混淆,asp.net,asp.net-mvc,entity-framework,Asp.net,Asp.net Mvc,Entity Framework,我希望有人能帮助我,我创建了一个代码优先的EF MVC4项目。在这里,我使用Seed方法和使用DropCreateDatabaseAlways的DbInitializer将数据插入数据库。但是,根据Asp.Net网站,发布时必须删除数据库种子的所有代码 我的问题是,如果我不能使用Seed方法而不每次添加数据(即一次性添加),那么我如何向数据库添加数据(通过与种子方法中的can相同的过程)。除了通过DatabaseExplorer或SQLServerManagementStudio添加到数据库之外

我希望有人能帮助我,我创建了一个代码优先的EF MVC4项目。在这里,我使用Seed方法和使用DropCreateDatabaseAlways的DbInitializer将数据插入数据库。但是,根据Asp.Net网站,发布时必须删除数据库种子的所有代码

我的问题是,如果我不能使用Seed方法而不每次添加数据(即一次性添加),那么我如何向数据库添加数据(通过与种子方法中的can相同的过程)。除了通过DatabaseExplorer或SQLServerManagementStudio添加到数据库之外,我别无选择吗


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

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

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

从本质上说,是的,在live app中保留创建和种子代码不是一个好主意,但仍然有一些方法可以让您使用代码优先的方法来创建和种子化live数据库


我还将研究如何使用迁移。这些方法提供了与代码优先方法相同的功能,但具有更细粒度的控制和更少的所需权限

如果我在调试中播种,数据在发布时是否仍然存在?如果将开发环境指向实时数据库,则是。您需要更改web.config文件中的连接字符串。您使用的是哪种托管/生产环境?(内部网络、DMZ、场外托管)目前的内部网络。首先,这不会挫败先使用代码的目标吗?听起来我应该先使用数据库。如果你在一个内部网络上,那么我所描述的将非常有效。代码优先是绿地项目的一种优秀开发技术。现在,我只会在您实际上已经拥有数据库(即在遗留系统中)时首先使用数据库。我并不是建议您针对实时数据库进行开发,只是建议您使用代码优先的数据库创建方法来创建实时数据并为其设定种子,以节省时间。我还要重申,查看代码优先迁移是一个好主意。