sql-server-2008 – 实体框架4代码第一 – 防止DB删除/创建

前端之家收集整理的这篇文章主要介绍了sql-server-2008 – 实体框架4代码第一 – 防止DB删除/创建前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用Code First范例编写了一个ASP.Net MVC 3应用程序,当我对模型进行更改时,Entity Framework会自动尝试通过DROP和CREATE语句重新创建底层sql Server数据库.问题是应用程序托管在第三方远程服务器上,这限制了我可以拥有的数据库数量,似乎不允许我从此错误消息中收集到以编程方式执行“CREATE DATABASE …”语句:

CREATE DATABASE permission denied in database ‘master’.

有没有办法阻止实体框架丢弃并尝试重新创建整个数据库,而是简单地删除表并重新创建它们?

在手动创建数据库并运行应用程序后,我也会看到以下错误,因为实体框架尝试修改数据库

Model compatibility cannot be checked because the database does not contain model Metadata. Ensure that IncludeMetadataConvention has been added to the DbModelBuilder conventions.

解决方法

更新:通过谷歌发现这个宝石,这听起来像你所需要的: http://nuget.org/Tags/IDatabaseInitializer

您可以使用不同的数据库初始化程序.让我们说你的上下文被称为SampleContext,那么你的构造函数看起来像这样:

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/

猜你在找的MsSQL相关文章