Я создал новый проект (ASP.NET MVC), который будет использовать Entity Framework Code First для создания новой базы данных и добавления записей в базу данных только один раз и заполнения раскрывающегося списка. Я пытаюсь понять, как создать базу данных автоматически. Пока что, когда я запускаю код, я получаю «разрешение 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>
0
Vahe Jabagchourian 27 Авг 2014 в 04:54

1 ответ

Лучший ответ

У вас должна быть строка подключения, которая соответствует имени контекста db, если у вас есть конструктор без параметров в контексте db.

1
Yuliam Chandra 27 Авг 2014 в 07:02
Большое Вам спасибо. Это изменение теперь приводит к автоматическому созданию базы данных.
 – 
Vahe Jabagchourian
27 Авг 2014 в 18:31