C# - 在数据库' master'中拒绝CREATE DATABASE权限(EF - 代码优先)

时间:2015-10-02 16:33:11

标签: c# asp.net-mvc ef-code-first

我在这里看到了一些答案,但没有任何帮助解决问题。

我正在关注MVC Jumpstart的Microsoft ITAcademy教程,他们通过一个使用EF Code-First方法的示例进行教学。

当我运行该应用程序时,我收到了错误消息:

  

在数据库' master'

中拒绝CREATE DATABASE权限

这是我的连接字符串:

<add name="DefaultConnection" 
     connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=aspnet-Conference-20150930151714;Integrated Security=true" 
     providerName="System.Data.SqlClient" />`

我不会在这里发布所有代码,因为它是通过Microsoft教程逐行完成的。

当我调用一个应该从数据库中检索数据的控制器时,它失败了:

public ActionResult Index()
{
    return View(db.Speakers.ToList());//fails here with described exception
}

这是DatabaseGlobal.asax.cs初始化的方式:

using System.Data.Entity;    
public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        Database.SetInitializer<ConferenceContext>(new ConferenceContextInitializer());
        //the rest of code....// 
    }
}

这是ConferenceContext类:

using System.Data.Entity;
public class ConferenceContext : DbContext
{
    //public ConferenceContext() : base("name = DefaultConnection") { }
    public DbSet<Session> Sessions { get; set; }
    public DbSet<Speaker> Speakers { get; set; }
}

这是一段用于向Database添加虚拟数据的代码:

public class ConferenceContextInitializer : DropCreateDatabaseAlways<ConferenceContext>
{
    protected override void Seed(ConferenceContext context)
    {
        context.Sessions.Add(
            new Session()
            {
                Title = "I want Spaghetti",
                Abstract = "The life and times of spaghetti lover",
                Speaker = context.Speakers.Add(
                    new Speaker()
                    {
                        Name = "John Doe",
                        EmailAddress = "john.doe@test.com"
                    })
            });
        context.SaveChanges();
    }
}

你能解释一下我应该在哪里创建数据库吗?

我应该对SQL Server拥有特殊权限,还是只在App_Data文件夹中创建数据库?

我可以在我的工作PC上完全创建数据库吗?

1 个答案:

答案 0 :(得分:2)

您需要为您的帐户授予在服务器上创建数据库的全局服务器权限。