我首先使用Entity Framework代码和SQL Server 2008进行开发。
我想支持这种常见的安装方案:
database_owner
权限)但是,当我尝试让Entity Framework初始化数据库时:
context.Database.Create();
我会得到一个异常,因为这个方法试图创建数据库,而不仅仅是在数据库中创建表,视图等。
如何使用已经为其创建的数据库,使用没有“创建数据库”权限的用户初始化实体框架?
答案 0 :(得分:4)
IDatabaseIntializer的实现仅创建表:
http://nuget.org/List/Packages/EFCodeFirst.CreateTablesOnly
这里也有很好的解决方案:
Entity Framework CTP 4 - Code First Custom Database Initializer
答案 1 :(得分:3)
与所使用的技术无关,应用程序应将部署权限与正常使用权限分开。要求更高的部署权限是完全可以接受的,您应该遵循相同的模型。换句话说,您的部署(读取:'Setup'或'MSI'或'Installation')应该需要更高的权限(例如dbcreator成员资格),并且在这个提升的部署环境下,创建'代码优先'模型。只需将“context.Database.Create”移动到您的应用程序安装程序中,让管理员安装该应用程序。