【问题标题】:ASP.NET MVC Code-First EF - Possible to use EF without database create permissions?ASP.NET MVC Code-First EF - 可以在没有数据库创建权限的情况下使用 EF?
【发布时间】:2012-05-01 10:48:48
【问题描述】:

所以我正在为大学做一个 ASP.NET 项目。我们必须将代码上传到运行 IIS 和 SQL Server 2008 的服务器。我使用 MVC Code-First EF 编写了我的项目。我知道实体框架系统需要创建数据库才能正常工作的权限(你不能只给它一个空数据库并让它用数据填充它)。这给我带来了一个问题,因为我在共享 SQL Server 上没有数据库创建权限。有没有办法解决这个问题?

【问题讨论】:

    标签: sql-server asp.net-mvc entity-framework code-first


    【解决方案1】:

    由于您没有权限,听起来您需要让 DBA 在您尝试部署到的服务器上创建数据库 - 这可以通过数据库创建脚本或数据库来完成在您的开发机器上备份数据库。然后,您可以先指示 EF 代码不要尝试通过将此行添加到 global.asax(或者实际上是在您首次访问数据库之前的任何位置)来自动创建/更新数据库

    Database.SetInitializer<YourContextType>(null);
    

    【讨论】:

      【解决方案2】:

      您可以使用现有的数据库,而不是让 EF 为您创建一个。我自己已经这样做了,但不可否认,只有在使用 EF Migrations 时。否则,您会遇到缺少表异常等问题。

      使用迁移时,只需将连接字符串指向空数据库,创建初始迁移以使用您的架构填充数据库,然后更新数据库本身。

      看到这个答案:How do I create a migration for an existing database in EntityFramework 4.3?

      .. 包括这个很好的 EF 迁移入门链接:http://thedatafarm.com/blog/data-access/using-ef-migrations-with-an-existing-database/

      所有这些都可以通过 Nuget 获得,如果您可以访问 Pluralsight 内容,我强烈推荐 Julie Lerman 关于该主题的视频。

      如果您不想使用迁移,如果您只是使用 SMMS 手动创建数据库对象,您仍然可以使用 Code First,但显然您需要手动工作来保持模型和数据库同步。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多