ASP .NET - połączanie z DB

0

Witam,
próbuję stworzyć swoją pierwszą aplikacje i mam problem z zapisem i w ogóle utworzeniem lokalnej bazy danych...
błąd:
http://postimg.org/image/csmjg0i5b/

Context

using Internetowy_Sklep_Filmowy.Models;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Threading.Tasks;

namespace Internetowy_Sklep_Filmowy.DataAccess
{
    public class AssortmentRelationships : DbContext
    {
        public AssortmentRelationships() : base("AssortmentRelationships")
        {

        }

        public DbSet<Movie> Movies { get; set; }
        public DbSet<Kind> Kinds { get; set; }
        public DbSet<Purchase> Purchases { get; set; }
        public DbSet<PurchaseDetail> PurchaseDetails { get; set; }
    }
}

Home Controller

using Internetowy_Sklep_Filmowy.DataAccess;
using Internetowy_Sklep_Filmowy.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Internetowy_Sklep_Filmowy.Controllers
{
    public class HomeController : Controller
    {
        private AssortmentRelationships db = new AssortmentRelationships();
        //// GET: Home
        public ActionResult Index()
        {
            Kind newKind = new Kind { KindName = "asdasd", KindImg = "1.png", KindNo = 1, KindText = "asdasdasd" };
            db.Kinds.Add(newKind);
            db.SaveChanges();

            return View();
        }
    }
}

WebConfig

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

Baza danych w ogóle się nie tworzy i wywali mi błąd... proszę o porade...

0

Dzięki, przeglądałem już to. Tylko ciekawi mnie dlaczego w tutorialu z którego się uczę to robić nie ma nic więcej poza moim kodem i działa...

0

error2.jpg
Taki błąd mam w VS...

0

Nic nowego nie pokazałeś. Problem masz bardzo prawdopodobne w modelu. Jeśli chcesz pokazać na forum coś więcej, to zamiast kolejnego screena z błędem, może pokaż jak wygląda klasa Kind.

0
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace Internetowy_Sklep_Filmowy.Models
{
    public class Kind
    {
        [Key]
        public string KindName { get; set; }
        public string KindText { get; set; } 
        public int KindNo { get; set; } 
        public string KindImg { get; set; }
        public virtual ICollection<Movie> MovieCollection { get; set; }
    }
}
0

Rozumiem, że tutaj bazujesz na EntityFramework?

Entity Framework CodeFirst recognize the key, by default, by name. Valid names are Id or <YourClassName>Id.

0

Tak

0

Spróbuj coś takiego skoro sam "generujesz" PK:

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public string KindName { get; set; }
0

Dalej to samo ;/

0

Masz błąd w connectionStrings w pliku web.config.

0

Co masz w InnerException tego ModelValidationException, które Ci wyskakuje?

0

Pusto, nic nie ma :)
Co jest nie tak w connection string ? analizuje literke po literce i nie doszukalem się niczego...

0

Zauważyłem, że wszystko działa póki nie dodam jakiejkolwiek klasy do storecontextu lub inicjalizatora... nawet kopie działających klas z zmienioną nazwą...

0

Robisz kurs z eduweba. Widzę po błędzie bo gdy go przerabiałem swego czasu miałem dokładnie ten sam błąd. Trochę szukania na stackoverflow i doszedłem do etapu w którym miałem jakąś literówkę. W każdym razie tam był błąd.

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

Sprawdź czy masz dokładnie taki connectionString.

0

Tak, mam identyczny. Połącznie z bazą już jest.
Już wiem gdzie szukać błędu. gdy dodam sobie do StoreContext nową klase, np. Movie z polami typu string i dodam do StoreContextu to aplikacja nie działa...
Działa:

namespace Internetowy_Sklep_Filmowy.DAL
{
    public class StoreContext : DbContext
    {
        public StoreContext() : base("StoreContext")
        {

        }

        public DbSet<Genre> Genres { get; set; }
        public DbSet<Album> Albums { get; set; }
    }
}

Nie działa:

namespace Internetowy_Sklep_Filmowy.DAL
{
    public class StoreContext : DbContext
    {
        public StoreContext() : base("StoreContext")
        {

        }

        public DbSet<Genre> Genres { get; set; }
        public DbSet<Movie> Movies { get; set; }
    }
}

W dodatku klasa Movie jest identyczna jak Album tylko nazwy zmiennych inne... kompletnie już nie wiem o co chodzi...

Tak wygląda błąd:
error1.jpg

Więc reasumując gdy jako drugi DbSet daje Album to działa, gdy klase o innej nazwie ale identyczną nie działa...

0

a co z bazą danych? Dodajesz nowy model, dodajesz DbSet, używasz bazy danych, ale nie aktualizujesz bazy ... tzn. nic o tym nie piszesz. Nie chce mi się sprawdzać, ale z tego co wiem baza automatycznie się nie aktualizuje. Zazwyczaj jak coś zmieniam w modelu to do bazy "migruję" zmiany.

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