如何解决实体框架4代码优先-防止DB删除/创建
| 我已经使用Code First范例编写了一个ASP.Net MVC 3应用程序,据此,当我对模型进行更改时,实体框架会自动尝试通过DROP和CREATE语句重新创建基础SQL Server数据库。问题是该应用程序托管在第三方远程服务器上,这限制了我可以拥有的数据库数量,并且在我从此错误消息中收集信息时,似乎不允许我以编程方式执行\“ CREATE DATABASE ... \”语句: 在数据库\'master \'中拒绝了CREATE DATABASE权限。 有没有什么方法可以阻止Entity Framework删除并尝试重新创建整个数据库,而是使其简单地删除表并重新创建它们? 在手动创建数据库并运行应用程序之后,我也遇到以下错误,因为实体框架尝试修改数据库: 由于数据库不包含模型元数据,因此无法检查模型兼容性。确保已将IncludeMetadataConvention添加到DbModelBuilder约定中。解决方法
更新:通过Google找到了这颗宝石,听起来确实正是您所需要的:http://nuget.org/Tags/IDatabaseInitializer
您可以使用其他数据库初始化程序。假设您的上下文称为“ 0”,那么您的构造函数将如下所示:
public SampleContext()
{
System.Data.Entity.Database.SetInitializer(new CreateDatabaseIfNotExists<SampleContext>());
}
请注意,以上是默认的初始化程序。您可能需要通过实现IDatabaseInitializer
创建自己的自定义初始化程序。这里有一些很好的信息:http://sankarsan.wordpress.com/2010/10/14/entity-framework-ctp-4-0-database-initialization/
,将EF 4.3与Migrations结合使用时,您不会获得此行为-至少我没有看到它。但是我的代码中也有此设置-
public sealed class DbConfiguration : DbMigrationsConfiguration<DatabaseContext>
{
public DbConfiguration()
{
AutomaticMigrationsEnabled = false;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。