Nano Hash - криптовалюты, майнинг, программирование

Веб-форма ASP.NET не создает базу данных LocalDb

Я запускаю приложение ASP.NET Webforms в Visual Studio 2015 и пытаюсь добавить свои модели в базу данных с помощью Entity Framework Code First, но файл базы данных не отображается. Я использую SQL Server Express LocalDB, который поставляется при установке VS для простоты. У меня есть следующий код, настроенный для создания и заполнения моей модели.

Модель класса "Монстр":

using System.ComponentModel.DataAnnotations;
namespace MonsterMadness.Models
{
    public class Monster
    {
        [ScaffoldColumn(false)]
        public int MonsterId { get; set; }

        public string Name { get; set; }

        [ScaffoldColumn(false)]
        public int AttackPower { get; set; }

        [ScaffoldColumn(false)]
        public int Defence { get; set; }

        [ScaffoldColumn(false)]
        public int ChanceToHit { get; set; }

        [ScaffoldColumn(false)]
        public int Dodge { get; set; }

        [ScaffoldColumn(false)]
        public int Critical { get; set; }
    }
}

Мой класс контекста БД "MonsterMadnessContext":

using System.Data.Entity;
namespace MonsterMadness.Models
{
    public class MonsterMadnessContext : DbContext
    {
        public MonsterMadnessContext() : base("MonsterMadness")
        {
        }

        public DbSet<Monster> Monsters
        {
            get; set;
        }
    }
}

Мой инициализатор "MonsterMadnessDatabaseInitializer":

using System.Data.Entity;
namespace MonsterMadness.Models
{
    public class MonsterMadnessDatabaseInitializer : DropCreateDatabaseIfModelChanges<MonsterMadnessContext>
    {
        protected override void Seed(MonsterMadnessContext context)
        {
            GetMonsters().ForEach(monster => context.Monsters.Add(monster));
        }

        private static List<Monster> GetMonsters()
        {
            List<Monster> monsters = new List<Monster>
            {
                new Monster()
                {
                    Name = "Test 1",
                    AttackPower = 10,
                    ChanceToHit = 10,
                    Critical = 10,
                    Defence = 10,
                    Dodge = 10
                },
                new Monster()
                {
                    Name = "Test 2",
                    AttackPower = 20,
                    ChanceToHit = 20,
                    Critical = 20,
                    Defence = 20,
                    Dodge = 20
                }
            };

            return monsters;
        }
    }
}

Мой инициализатор запускается в файле Global.ascx:

public class Global : HttpApplication
{
    void Application_Start(object sender, EventArgs e)
    {
        // Code that runs on application startup
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);

        //Initialize database
        Database.SetInitializer(new MonsterMadnessDatabaseInitializer());
    }
}

И, наконец, моя запись в web.config для строки подключения «MonsterMadess», которая должна указывать на LocalDB:

<connectionStrings>
    <add name="MonsterMadness" connectionString="Data Source=(LocalDB)\v12.0;AttachDbFilename=|DataDirectory|\monstermadness.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>

Я настроил все на основе это руководство, но всякий раз, когда я запускаю приложение, я не вижу создаваемого файла mdf. Поскольку у меня запущен инициализатор, в таблице должны быть данные, и файл должен быть создан. Что мне не хватает? Спасибо за помощь.


  • ПОЛУЧАЕТЕ ЛИ вы ошибку во время выполнения приложения? 15.11.2015
  • @CodeNotFound Я не вижу никаких исключений, и у меня настроено прерывание всех исключений CLR при возникновении. Я еще не обращаюсь к таблице, так как хотел, чтобы она была создана первой, если это что-то изменит. 15.11.2015
  • В вашем руководстве говорится, что база данных будет создана при первом запуске приложения. При запуске приложения база данных не создается. Вы должны запросить свою базу данных, используя свой код, например MonsterMadnessContext.Monsters.ToList() 15.11.2015
  • @CodeNotFound Итак, видимо, мне нужно научиться лучше читать, большое спасибо за указание на это. Извините за потраченное время! 15.11.2015
  • Без проблем. Пожалуйста. 15.11.2015

Ответы:


1

Добавьте эту строку в конструктор контекста:

Database.SetInitializer(
    new CreateDatabaseIfNotExists<MonsterMadnessContext>());
29.03.2018
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..