正如所讨论的在这个线程中 https://stackoverflow.com/questions/5584546/ef-4-1-cf-create-database-permission-denied-in-database-master,Entity Framework Code First 适合开发环境。那么,需要对 Entity Framework Code First 应用程序进行哪些步骤或更改才能将其转移到生产环境?
- 将数据库迁移到生产服务器。
- 更改 Web.config 中的连接字符串
需要对 DbContext 初始化进行任何更改以防止其在生产环境中胡闹吗? (或者由于迁移的数据库中的数据库模式是正确的,因此它不会遇到麻烦吗?)还有什么要做吗?
这是一篇关于代码优先方法的精彩文章,包括底部的生产部署:http://msdn.microsoft.com/en-us/magazine/hh126815.aspx http://msdn.microsoft.com/en-us/magazine/hh126815.aspx
您可以使用诸如Red Gate 的 SQL 比较 http://www.red-gate.com/products/sql-development/sql-compare/分析您的开发环境和目标环境之间的差异,以构建允许 DBA 执行迁移的更改脚本。
您可能想做的另一件事是将名为“AppVersion”的实体添加到代码优先上下文中。然后,重写 DropCreateDatabaseIfModelChanges IDatabaseInitializer 的 Seed() 方法,以便它写入当前应用程序版本,或者可能使用连续构建写入源代码管理修订号。
Example:
public class OrderDbInitializer : DropCreateDatabaseIfModelChanges<OrderContext>
{
protected override void Seed(OrderContext context)
{
context.AppVersion.Add(new AppVersion() {Version = Assembly.GetExecutingAssembly().GetName().Version.ToString()});
context.SaveChanges();
}
}
这样,您将始终知道哪个版本的代码与数据库关联。您还可以向 Seed() 方法添加更多代码,以创建开发人员在编写应用程序时需要使用的示例数据。
最后,您不想在生产中使用 DropCreateDatabaseIfModelChanges 初始值设定项,因此使用配置转换 http://msdn.microsoft.com/en-us/library/dd465326.aspx或者需要使用一些工厂模式。
希望能给您带来一些想法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)