实体框架代码优先(新数据库)生成错误 - " CREATE DATABASE权限被拒绝在数据库' master'。"。

时间:2014-08-27 00:54:10

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

我创建了一个新项目(ASP.NET MVC),它将使用Entity Framework Code First创建一个新数据库并仅向数据库添加一次记录并填充下拉列表。 我试图弄清楚如何自动生成数据库。到目前为止,当我运行代码时,我得到“数据库'master'中的CREATE DATABASE权限被拒绝。” Master不是正确的数据库。我需要在代码或连接字符串中修改什么才能从头开始自动创建数据库?

控制器:

namespace TDReport.Controllers
{
    public class ReportController : Controller
    {
        //
        // GET: /Report/

        public ActionResult Index()
        {
            var db = new StageContext();
            if (!db.Database.Exists())
            {
                db.Database.Create();
                db.Stages.Add(new Stage { PCR = 201 });
                db.Stages.Add(new Stage { PCR = 202 });
                db.Stages.Add(new Stage { PCR = 203 });
                db.Stages.Add(new Stage { PCR = 501 });
                db.SaveChanges();
            }
            return View();
        }

上下文类:

namespace TDReport.Models
{
    public class StageContext : DbContext
    {
        public DbSet<Stage> Stages { get; set; }
        public DbSet<Report> Reports {get; set;}
    }
}

型号:

namespace TDReport.Models
{
    public class Stage
    {
        public int ID { get; set; }
        public int PCR { get; set; }
    }
}

连接字符串标签:

<connectionStrings>
    <add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-TDReport-20140825134744;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-TDReport-20140825134744.mdf" />
    <add name="StageProductionEntities" connectionString="metadata=res://*/Models.Model1.csdl|res://*/Models.Model1.ssdl|res://*/Models.Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\StageProduction.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>

1 个答案:

答案 0 :(得分:1)

如果在db上下文中有无参数构造函数,则需要有一个与db context名称匹配的连接字符串。

  

<add name="StageContext" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=TheDatabaseName;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\TheDatabaseName.mdf" />