加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 16:19:53 所属栏目:MsSql教程 来源:网络整理
导读:我使用Code First范例编写了一个ASP.Net MVC 3应用程序,当我对模型进行更改时,Entity Framework会自动尝试通过DROP和CREATE语句重新创建底层SQL Server数据库.问题是应用程序托管在第三方远程服务器上,这限制了我可以拥有的数据库数量,似乎不允许我从此错误消
我使用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/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读