所以我正在为大学做一个 ASP.NET 项目。我们必须将代码上传到运行 IIS 和 SQL Server 2008 的服务器。我使用 MVC Code-First EF 编写了我的项目。我了解实体框架系统需要创建数据库才能正常工作的权限(您不能只给它一个空数据库并让它用数据填充它)。这给我带来了一个问题,因为我在共享 SQL Server 上没有数据库创建权限。有没有办法解决?
2 回答
由于您没有权限,听起来您需要让 DBA 在您尝试部署到的服务器上创建数据库 - 这可以通过数据库创建脚本或数据库备份来完成db 在你的开发机器上。然后,您可以先指示 EF 代码不要尝试通过将此行添加到 global.asax 来自动创建/更新数据库(或者实际上是在您首次访问数据库之前的任何位置)
Database.SetInitializer<YourContextType>(null);
您可以使用现有数据库,而不是让 EF 为您创建一个。我自己已经这样做了,但不可否认的是,只有在使用 EF Migrations 时。否则,您会遇到缺少表异常等问题。
使用迁移时,只需将连接字符串指向空数据库,创建初始迁移以使用架构填充数据库,然后更新数据库本身。
请参阅此答案:如何在 EntityFramework 4.3 中为现有数据库创建迁移?
.. 其中包括这个不错的 EF 迁移入门链接:http: //thedatafarm.com/blog/data-access/using-ef-migrations-with-an-existing-database/
所有这些都可以通过 Nuget 获得,如果您可以访问 Pluralsight 内容,我强烈推荐 Julie Lerman 关于该主题的视频。
如果您不想使用迁移,如果您只是使用 SMMS 手动创建数据库对象,您仍然可以使用 Code First,但显然您需要手动工作来保持模型和数据库同步。