Wpis z mikrobloga

Pytanie z podstaw baz danych i entity framework. Mam taki model:

class Customer
{
public int? CustomerId { get; set; }
public string Name { get; set; }
// inne dane...
}

class Order
{
public int? OrderId { get; set; }
// inne dane...
public Customer Customer { get; set; }
public List Products { get; set; }
}

class Product
{
public int? ProductId { get; set; }
public string ProductName { get; set; }
// inne dane...
}

Żeby taki model odwzorować w bazie będę musiał zrobić normalizację ze względu na tabele Order (która może zawierać wiele produktów). Baza więc będzie miała postać jak na załączonym zdjęciu (3 kropki to jakiś kolejne dane).
Pytanie jest czy mogę teraz w EF zmapować bazę do mojego pierwotnego modelu. Będę wdzięczny za odesłanie do konkretnych materiałów.
#programowanie #csharp #entityframework #pytanie
PanCogito - Pytanie z podstaw baz danych i entity framework. Mam taki model:

class...

źródło: comment_BRHpu4o8gED0n92nkVhVkXuvrADTBDDC.jpg

Pobierz
  • 16
@niepoprawnyhumanista: na szybko kopiowałem i zapomniałem wykasować te nullable do id'ków. Zależy mi właśnie na podejściu gdy baza już istnieje i ma taką mniej więcej postać, a ja chcę się do nie odnosić za pomocą właśnie takiego 'uproszczonego' modelu.
@niepoprawnyhumanista: Pisałeś, że mogę pytać więc korzystam ( ͡° ͜ʖ ͡°).
Stworzyłem sobie pustą bazę danych typu "localDb" o nazwie "StoreDb"

Mój model, context i connection string są na załączonym obrazku.
Problem jest taki, że gdy próbuje cokolwiek zdziałać na tej bazie to wyskakuje mi błąd:
"Nie można odnaleźć żądanego dostawcy danych programu .Net Framework. Możliwe, że nie został zainstalowany"

Gdy nazwa connectionString (z pliku App.Config) różni
PanCogito - @niepoprawnyhumanista: Pisałeś, że mogę pytać więc korzystam ( ͡° ͜ʖ ͡°)....

źródło: comment_RxhKCeCl6JPW67FpXMqxbV7OuAL4tKRD.jpg

Pobierz
@PanCogito: i zalecam jednak nazywanie ID w klasach po prostu "Id" zamiast "CustomerID", "StoreID".
Z dwóch powodów:
Jeśli masz "Id" w klasie "Store" to oczywistym jest, że jest to StoreId. (chyba ze to klucze obce wtedy masz inne nazwy, ale to EF generuje sam). A dwa, standardowa konwencja nazewnicza EF weźmie propercje o nazwie "Id" i ustawi na niej klucz główny. Tak to musialbys recznie dac atrybut [Key]
@niepoprawnyhumanista: Jak zmienie providera to wyskakuje mi inny błąd:

An error occurred while getting provider information from the database. This can be caused by Entity Framework using an incorrect connection string. Check the inner exceptions for details and ensure that the connection string is correct


Zresztą ten oryginalny connection string został sam wygenerowany (po dodaniu bazy danych do projektu), ja jedynie zmieniłem nazwę connectionString'a na StoreDbContext
@niepoprawnyhumanista: dopiero teraz wracam do tematu (między czasie zmieniałem laptopa) i mam pytanie do SQL Server. Tak naprawdę zaczynam zabawę z SQL Server i na dzień dobry mam pytanie czy wystarczy zainstalować SQL Server 2014 Express i SQL Server 2014 Management Studio Express?
Rozumiem, że Management studio jest wymagana do jakiejkolwiek konfiguracja serwera i bez tego narzędzia się nie obejdzie (jest jeszcze opcja SQL Server 2014 Express with Tools ale to
@PanCogito: Management Studio nie służy do konfiguracji serwera, tylko do zarządzania bazą (wykonywania na niej zapytań itd). Bez tego narządzia ciężko się obejść i jest bardzo fajne. ta opcja "with tools" nie wiem co nawet daje :) generalnie instalujesz i wszystko sobie działa, nie wymaga to żadnej konfiguracji.

co do zasobów - nie przejmuj sie tym, jest praktycznie nie zauważalne. mam to i na kompie firmowym i na kompie normalym, gdzie