CodeFirst wraz z inicjalizerem

0

Witam serdecznie.

Napotkałem na pewien problem z code first.

Chciałbym aby EF automatycznie wygenerował mi bazę wraz z tabelami w zależności od wcześniej zadeklarowanych modeli.
I za każdym uruchomieniem programu kasował tę bazę i wypełniam danymi z powrotem.

Problem w tym, że nie wiem, gdzie ta baza się tworzy ( nigdzie jej nie ma ) a powinna chyba być w MS SQL Managerze.

W web.configu znajduje się domyślny ConnectionString wygenerowany przez EF.


 <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-SklepInternetowy-20140409105508.mdf;Initial Catalog=aspnet-SklepInternetowy-20140409105508;Integrated Security=True" providerName="System.Data.SqlClient" />
  </connectionStrings>

 

Natomiast opróćz tego mam swoje modele zawierające odpowiednie właściwości:
np. Uzytkownik, Produkt, Zamówienie.

Te modele rejestruję w moim kontekście:


 public class MyContext : DbContext
    {
        public MyContext()
        {
            
        }
        public DbSet<Address> Addresses { get; set; }
        public DbSet<User> Users { get; set; }
        public DbSet<Order> Orders { get; set; }
        public DbSet<Product> Products { get; set; }
        public DbSet<ProductCategory> ProductCategoriess { get; set; }
        public DbSet<ProductDescription> ProductDescriptionss { get; set; }
        public DbSet<Suplier> Supliers { get; set; }
    }

 

Następnie do tego kontekstu stworzyłem sobie klasę z Inicjalizerem:


public class ContextInitializer : DropCreateDatabaseAlways<MyContext>
    {
        protected override void Seed(MyContext context)
        {
            var userSeed = new List<User>
            {
                new User
                {
                    UserId = 1, UserName = "Admin", Password = "admin123", Email = "[email protected]", 
                    UserAvatarUrl = "~/Content/images/useravatar/", FirstName = "Admin", LastName = "Kowalski",
                    AccountStatus = AccountType.Administrator, AdresId = 1, Age = 22, DiscountPoints = 600,
                    RegistrationDate = DateTime.UtcNow, IsActivated = ActivationStatus.Yes
                },
            };

///////////////// wiecej obiektów.......

          
            foreach (var userItem in userSeed) // dodanie usera do tabeli users
            {
                context.Users.Add(userItem);
            }
           


            context.SaveChanges(); // zapisanie zmian
            base.Seed(context); // wywołanie metody seed
        }
    }

 

W ten sposób chciałbym utworzyć obiekty zawierające fakowe dane i wpisać je do mojej bazy.

 

ContextInitializer : DropCreateDatabaseAlways<MyContext>

Następnie ten inicjalizer dodałem do global.asax:

 

 public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            Database.SetInitializer(new DropCreateDatabaseAlways<MyContext>()); // dodanie inicjalizera
        }
    }

I nie chce to zagrać ;/ Co robię źle? Gdzie znajduje się ta baza, którą rzekomo EF powinien sam utworzyć?

Bardzo proszę o pomoc :)

0

Spojrz jeszcze raz na ConnectionString i zastanow sie gdzie powinna byc ta baza, bo na pewno nie w MSSQL managerze.

0

Ok zmieniłem connection Stringa ale nic sie nie zmieniło, baza nie tworzy się


  <connectionStrings>
      <add name="DefaultConnection"
           providerName="System.Data.SqlClient"
           connectionString="Server=OdynPC\Odyn; Database=Sklep; 
           Integrated Security=SSPI" />
  </connectionStrings>

 

W inicjalizerze chce przekazać tego connection string przez konstruktor

 

public ShopDataContext()
            : base("DefaultConnection")
        {
            
        }

Aplikacja niby działa, kompiluje się, uruchamia ale nie mogę dokopać się do tej bazy ;/

0

Ok już widze. Ta baza generuje się w App_Data naszego projektu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1