Tworzenie receptury w ASP.NET MVC

Tworzenie receptury w ASP.NET MVC
J0
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:14
0

Witam
Potrzebuje pomocy, bo chcę stworzyć funkcjonalność w mojej aplikacji, która będzie polegała na dodawaniu nowych receptur do bazy danych. Miałem zamiar zrobić w taki sposób, że tworzysz nowy przepis, pisząc jego nazwę a potem dodajesz nowe wiersze z nazwą składnika i jego ilością potrzebną do stworzenia dania. Mam stworzony model, ale wiem jak zrobić logikę, aby pobierało nazwe i składniki i dodawało je do bazy danych i każdy rekord w bazie danych to nazwa przepisu i jeden składnik z ilością.

fasadin
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
0

która będzie polegała na dodawaniu nowych receptur do bazy danych

Kopiuj
public async Task AddRecipe() 
{
  await _context.Recipes.AddAsync(new Recipe());
  await _context.SaveChangesAsync();
}

Miałem zamiar zrobić w taki sposób, że tworzysz nowy przepis, pisząc jego nazwę

Kopiuj
AddRecipe(string name); 

a potem dodajesz nowe wiersze z nazwą składnika i jego ilością potrzebną do stworzenia dania.

Kopiuj
public async Task AddDetailsToRecipe(int recipeId, string name, int quantity) // nie wiem jak Twoj model wyglada wiec nie wiem czym jest PK dla przepisu, zakladam ze masz inta autoinkrementujacego
{
  if (quantity < 0) 
  { 
    throw new Exception("nie moze byc ilosc mniejsza niz zero");
  }
  var recipe = _await context.Recipes.Where(recipe => recipe.Id == recipeId).SingleAsync(); // jezeli nie znajdzie zadnego lub wiecej wyrzuci wyjatek
  await recipe.Ingredients.AddAsync(new Ingredient(name, quantity);
  
  await _context.SaveChangesAsync();
}

Mam stworzony model,

To wystarczy dopasowac teraz kod to powyzszego kodu

ale wiem jak zrobić logikę, aby pobierało nazwe i składniki i dodawało je do bazy danych i każdy rekord w bazie danych to nazwa przepisu i jeden składnik z ilością.

w sensie nie wiesz? Bo tutaj piszesz ze wiesz :) Co rozumiesz przez pobieralo nazwe i skladniki? To przeciez musisz dodac gdzies w "controlerze" (w sensie w UI czy consola czy jak tam dodajesz rzeczy do aplikacji w sensie uzytkowej nie programistycznej)

edytowany 1x, ostatnio: fasadin
J0
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:14
0

@fasadin: tak jak napisałem wyżej, że wpisuje nazwę receptury/przepisu a potem wybieram nazwy składników z innej tabeli z składnikami, a potem ich ilość i zapisuje te dane w bazie danych. Tworzenie aplikacje webową.

fasadin
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
0

jak widzisz, napisalem dokladnie to co napisales, po czym piszesz mi

tak jak napisałem wyżej, że wpisuje nazwę receptury/przepisu a potem wybieram nazwy składników z innej tabeli z składnikami, a potem ich ilość i zapisuje te dane w bazie danych.

wiesz, ze to ma tylko sens dla Ciebie?

że wpisuje nazwę receptury/przepisu

gdzie wpisujesz? w zapytaniu SQL ? w html? w konsoli? jezeli tak, to w jaki sposob masz polaczenie do contextu? (w sensie do bazy danych)?

a potem wybieram nazwy składników z innej tabeli z składnikami,

ale o jakiej tabeli mowisz, SQL czy jakas masz aplikacje gdzie masz wyswietlanie wszystko jako tabele?

, a potem ich ilość i zapisuje te dane w bazie danych.

no to skoro juz zapisujesz to w bazie danych to w czym problem? Jakie masz pytanie?

Prosze doprecyzuj tak, by Twoi nietechniczni kumple zrozumieli co chcesz zrobic. Nikt nie potrafi Ci wyczytac w myslach co masz na mysli

J0
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:14
0

Dodaje model tabeli moich przepisów
screenshot-20201227113121.png

J0
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:14
0

Bo robię aplikacje webową w ASP.NET MVC. Tworzę funkcjonalność, polegająca na tym, że tworzę przepis, wpisuje nazwę przepisu, składniki i ich ilość. Następnie przepis jest zapisywany w bazie danych, której każdy składnik to odrębny rekord z tą samą nazwą przepisu/produktu. Następnie inna funkcjonalność będzie polegała na wybieraniu przepisu i pobieraniu z magazynu składników potrzebnych materiałów i tworzeniu produktu z zadeklarowaną ilością.

twoj_stary
funkcjonalność =/= funkcja
fasadin
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
1

w Recipes nie powinienes miec 'amountorazIdIngredient`. Co jezeli chcesz miec 3 skladniki? Jak wtedy bys sobie wyobrazil te dane?

potrzebujesz miec

Kopiuj
public virtual List<Ingredients> Ingredients {get;set;} // a nawet lepiej byloby ienumerable

w Ingredients masz

Kopiuj
public class Ingredients
{
  public int Id {get;set;}
  public int RecipeId {get;set;}
  public string Name {get;set;}
  public string Amount {get;set;} // chociaz ja wole quantity, amount to bardziej jezeli chodzi o gotowke
}

reszta tak jak napisalem w pierwszym moim poscie

edytowany 1x, ostatnio: fasadin
J0
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:14
0

Model Ingredients
screenshot-20201227113855.png

fasadin
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
J0
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:14
0

Przepisy mam zamiar usuwać edytować to wg. mnie użyje

Kopiuj
public virtual List<Ingredients> Ingredients {get;set;} // a nawet lepiej byloby ienumerable

Muszę dodać do modelu "Recipes" klucz obcy Idingredients i IdProducts czy wystarczy powyższa linijka kodu?

J0
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:14
0

Czy jest wymagane tworzenie kolumny IdIngredient z kluczem obcym, jeżeli mam:

Kopiuj
public virtual List<Ingredients> Ingredients {get;set;}

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.