ASP.NET MVC Code-First EF - 可以在没有数据库创建权限的情况下使用EF吗?

时间:2012-05-01 10:48:48

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

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

2 个答案:

答案 0 :(得分:2)

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

Database.SetInitializer<YourContextType>(null);

答案 1 :(得分:0)

您可以使用现有数据库,而不是让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,但显然您可以手动保持模型和数据库同步。