我有一个小的asp.net mvc4应用程序(在我的本地机器上工作正常),它使用实体框架v4.1.0.0和ADO.net DbContext Generator。(SQL Server 2008 r2)
我正在通过Visual Studio 2010中的“Add Deployable Dependencies ...”上下文菜单添加所需的更新版本的dll。
我与godaddy.com共享托管,我已将文件上传到服务器并创建了数据库,现在问题就出现了。当我尝试浏览我的网站时,我收到以下错误:
在数据库'master'中拒绝CREATE DATABASE权限。
我仔细研究了一下,发现这个错误是由EF代码首次尝试创建数据库造成的。但我不希望EF代码首先重新创建数据库,如何关闭这个自动数据库创建完全?我无意使用代码优先功能。
请帮忙。
答案 0 :(得分:23)
将此代码放入Global.asax的Application_Start()方法或DbContext类的构造函数
Database.SetInitializer<MyContext>(null);
如果要在更改POCO域时重新创建数据库,请使用以下代码而不是上面的代码
Database.SetInitializer<MyContext>(new DropCreateDatabaseIfModelChanges<MyContext>());
答案 1 :(得分:2)
如果您使用的是EF迁移,这就是您为此设置的内容:
public sealed class DbConfiguration : DbMigrationsConfiguration<DatabaseContext>
{
public DbConfiguration()
{
AutomaticMigrationsEnabled = false;
}
}
但这并没有回答关于EF Code First本身的问题。如果数据库已存在,则EF不会尝试创建它。所以你只需要将它指向现有的数据库。并确保连接字符串名称与数据库上下文的名称相同。如果不是,您需要提供一些覆盖:
public class DatabaseContext : DbContext
{
public DatabaseContext()
: base(ApplicationParameters.ConnectionStringName)
{
}
public DatabaseContext(string connectionStringName)
: base(connectionStringName)
{
}
}