• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem dodawania za każdym razem tych samych danych do bazy

Aruba Cloud - Virtual Private Server VPS
0 głosów
205 wizyt
pytanie zadane 25 sierpnia 2019 w C# przez Moras Obywatel (1,620 p.)

Cześć tworze sobie stronę w ASP.Net Mvc, ale mam problem z inicjalizacją danych. Chcę by dane były wprowadzone tylko przy pierwszym uruchomieniu programu. Myślałem, że dobrze to zrobiłem,ale te same dane są dodawane przy każdym uruchomieniu. Bazę zrobiłem w CodeFirst.

Tutaj mój Context:

namespace StoreProject.DAL
{
    using StoreProject.Models;
    using System;
    using System.Data.Entity;
    using System.Linq;

    public class StoreContext : DbContext
    {
        // Your context has been configured to use a 'StoreContext' connection string from your application's 
        // configuration file (App.config or Web.config). By default, this connection string targets the 
        // 'StoreProject.DAL.StoreContext' database on your LocalDb instance. 
        // 
        // If you wish to target a different database and/or database provider, modify the 'StoreContext' 
        // connection string in the application configuration file.
        public StoreContext()
            : base("name=StoreDb")
        {
        }
        static StoreContext()
        {
            Database.SetInitializer<StoreContext>(new StoreInitializer());
        }

        // Add a DbSet for each entity type that you want to include in your model. For more information 
        // on configuring and using a Code First model, see http://go.microsoft.com/fwlink/?LinkId=390109.

         public virtual DbSet<Product> Products { get; set; }
    }

    //public class MyEntity
    //{
    //    public int Id { get; set; }
    //    public string Name { get; set; }
    //}
}

Initializer:

using StoreProject.Models;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Data.Entity;
using System.Data.Entity.Migrations;
using System.Linq;
using System.Web;
using StoreProject.Migrations;

namespace StoreProject.DAL
{
    public class StoreInitializer : MigrateDatabaseToLatestVersion<StoreContext, Configuration>
    {
        public static void SeedStoreData(StoreContext context)
        {
            var products = new List<Product>
            {
                new Product(){Name = "Czekolada biała",Price = 2.20f, Country = "Madagaskar"},
                new Product(){Name = "CzekoladaCzarna", Price=3.30f, Country = "Belgia"}
               
            };
            products.ForEach(a => context.Products.AddOrUpdate(a));
          
            context.SaveChanges();
        }
    }
}

Configuration w Migrations:

using StoreProject.DAL;

namespace StoreProject.Migrations
{
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Migrations;
    using System.Linq;

    public sealed class Configuration : DbMigrationsConfiguration<StoreProject.DAL.StoreContext>
    {
        public Configuration()
        {
            AutomaticMigrationsEnabled = false;
            ContextKey = "StoreProject.DAL.StoreContext";
        }

        protected override void Seed(StoreProject.DAL.StoreContext context)
        {
            StoreInitializer.SeedStoreData(context);
            //  This method will be called after migrating to the latest version.

            //  You can use the DbSet<T>.AddOrUpdate() helper extension method 
            //  to avoid creating duplicate seed data.
        }
    }
}

 

komentarz 26 sierpnia 2019 przez piotrsz109 Stary wyjadacz (13,730 p.)
Możesz podawać dane w metodzie Seed w Configuration, zostaną one dodane jedynie po wysłaniu migracji bazy danych.
komentarz 26 sierpnia 2019 przez Moras Obywatel (1,620 p.)

To nic nie dało. Dalej te same dane są dodawane sad

komentarz 26 sierpnia 2019 przez Moras Obywatel (1,620 p.)
Nie no to jest jakieś beznadziejne. Nie lepiej zrobić nową migracje i w niej dodać sql-em nowe wiersze w tabeli?
komentarz 26 sierpnia 2019 przez Moras Obywatel (1,620 p.)

@piotrsz109, Bo jak jak wprowadzę te dane do inicjalizatora robie 'add-migration' i gdy sie zrobi nic tam nie ma, a powinno byc wstawienie nowych danych

komentarz 26 sierpnia 2019 przez piotrsz109 Stary wyjadacz (13,730 p.)
Musisz wydałeś polecenie, update-database? Po za tym są pewne ustawienia odnośnie usuwania danych podczas aktualizacji struktury bazy danych

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 253 wizyt
0 głosów
0 odpowiedzi 349 wizyt
pytanie zadane 15 czerwca 2018 w C# przez HDRGXS Początkujący (470 p.)
0 głosów
1 odpowiedź 165 wizyt
pytanie zadane 25 sierpnia 2019 w C# przez Moras Obywatel (1,620 p.)

93,322 zapytań

142,319 odpowiedzi

322,388 komentarzy

62,651 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...