private Table ReadOrNewTable(int?id, ReadOrNewOperation op) { Table table; switch (op) { case ReadOrNewOperation.Read: table = db.Tables.Find(id); if (table == null) { return(null); } //szólni kell az Entity Frameworknek, hogy //az asztalhoz töltse be a termet is, ahova rögzítettük. db.Entry(table) .Reference(x => x.Location) .Load(); break; case ReadOrNewOperation.New: table = new Table(); break; default: throw new Exception($"Erre a műveletre nem vagyunk felkészítve: {op}"); } //A lenyílómező adatainak kitöltése // ?: feltételes null operátor, // ha eddig a kifejezés értéke null, akkor megáll és a végeredmény null // ha pedig nem null, akkor folytatódik a kiértékelés, és megy tovább //ugyanaz, mint ez: //int? eredmeny; //if (table.Location == null) //{ // eredmeny = null; //} //else //{ // eredmeny = table.Location.Id; //} // ??: null operátor, ha a bal oldalán szereplő érték null, akkor az eredmény a jobb oldalán szereplő érték //ugyanaz, mint ez //if (eredmeny == null) //{ // eredmeny = 0; //} table.LocationId = table.Location?.Id ?? 0; LoadAssignableLocations(table); return(table); }
private Table ReadOrNewTable(int?id, ReadOrNewOperation op) { Table table; switch (op) { case ReadOrNewOperation.Read: table = db.Tables.Find(id); if (table == null) { return(null); } //Szolni kell az EF-nek, hogy az asztalhoz toltse be a termet is. db.Entry(table) .Reference(x => x.Location) .Load(); break; case ReadOrNewOperation.New: table = new Table(); break; default: throw new Exception($"Erre a muveletre nem vagyunk felkeszulve: {op}"); } //A lenyilo mezo adatainak kitoltese //?: felteteles null operator: // ha eddig a kifejezes ertekes null, akkor megall, es a vegeredmeny null // ha pedig nem null, akkor folytatodik a kiertekeles, es megy tovabb //ugyanaz, mint ez: //int? eredmeny; //if (table.Location == null) //{ // eredmeny = null; //} //else //{ // eredmeny = table.Location.Id; //} //??: null operator: ha a bal oldalan szereplo ertek null, akkor az ererdmeny a jobb oldalan szereplo ertek //ugyanaz, mint ez: //if (eredmeny == null) //{ // eredmeny = 0; //} table.LocationId = table.Location?.Id ?? 0; LoadAssignableLocations(table); return(table); }
/// <summary> /// Ez a függvény felelős a model betöltéséért minden megjelenítő (get) action esetén /// </summary> /// <param name="id">MenuItem azonosító, lehet null is.</param> /// <param name="op">Művelet: Read vagy New</param> /// <returns></returns> private MenuItem ReadOrNewMenuItem(int?id, ReadOrNewOperation op) { MenuItem menuItem; switch (op) //Az op változó értékétől függ, hogy merre megyünk tovább { case ReadOrNewOperation.Read: //ha Read az érték akkor erre //1. Adatok betöltése az Adatbázisból (Model) ///////////////////////////////////////////// menuItem = db.MenuItems.Find(id); if (menuItem == null) { //return menuItem; //ez ugyanaz: return(null); } //Ahhoz, hogy legyen, be kell töltenünk a menuItem Category property-jét, //amit magától az EF (EntityFramework) nem tölt be db.Entry(menuItem) .Reference(x => x.Category) .Load(); break; case ReadOrNewOperation.New: //ha new az érték akkor erre //1. Adat (model) példányosítása "röptében" menuItem = new MenuItem(); break; default: //Ha egyik sem igaz a fentiek közül akkor van ez throw new Exception($"Erre nem készültünk fel: {op}"); } //2. Megjelenítési adatok feltöltése (ViewModel) //hogy be tudjuk állítani a lenyílót, megadjuk az aktuális Category azonosítóját if (menuItem.Category != null) { menuItem.CategoryId = menuItem.Category.Id; } //leküldjük a Categories tábla tartalmát (db.Categories.ToList()) //megadjuk, hogy melyik mező azonosítja a sort, és adja azt az értéket, ami a végeredmény (Id), //megadjuk, hogy a lenyíló egyes soraiba, melyik property értékei kerüljenek (Name) LoadAssignableCategories(menuItem); return(menuItem); }
/// <summary> /// Ez a fuggveny felelos a model betolteseert minden megjelenito (get) action eseten /// </summary> /// <param name="id">Menuitem azonosito, lehet null is.</param> /// <param name="op">Muvelet: Read vagy New</param> /// <returns></returns> private MenuItem ReadOrNewMenuItem(int?id, ReadOrNewOperation op) { MenuItem menuItem; switch (op) { case ReadOrNewOperation.Read: //1. Adatok betoltese az adatbazisbol (Model) menuItem = db.MenuItems.Find(id); if (menuItem == null) { return(null); } //Ahhoz, hogy legyen, be kell toltenunk a menuItem Category property-jet, //amit magatol az EF nem tolt be db.Entry(menuItem) .Reference(x => x.Category) .Load(); break; case ReadOrNewOperation.New: //1. Adat (model) peldanyositasa menuItem = new MenuItem(); break; default: throw new Exception($"Erre nem keszultnk fel: {op}"); } //2. Megjelentesi adatok feltoltese (ViewModel) //Hogy be tudjuk allitani a lenyilot, ezert megadjuk az aktualis Category azonositojat if (menuItem.Category != null) { menuItem.CategoryId = menuItem.Category.Id; } //Lekuldjuk a Categories adatbazistabla tartalmat (db.Categories.ToList()), //megadjuk, hogy melyik mezo azonositja a sort, es adja azt az erteket, ami a a vegeredmeny (Id) //megadjuk, hogy a lenyilo egyes soraiba melyik property (oszlop) ertekei keruljenek. (Name) LoadAssignableCategories(menuItem); return(menuItem); }
/// <summary> /// Ez a függvény felelős a model betöltéséért minden megjelenítő (get) action esetén /// </summary> /// <param name="id">MenuItem azonosító, lehet null érték is</param> /// <param name="op">Művelet: Read or New</param> /// <returns></returns> private MenuItem ReadOrNewMenuItem(int?id, ReadOrNewOperation op) { MenuItem menuItem; switch (op) { case ReadOrNewOperation.Read: // 1. Adatok betöltése az adatbázisból (Model) menuItem = db.MenuItems.Find(id); if (menuItem == null) { // return menuItem; return(null); } //return db.MenuItems.Find(id); // Be kell töltenünk a menuItem Category property-jét, amit az Entity Framework magától nem tölt be db.Entry(menuItem) .Reference(x => x.Category) .Load(); break; case ReadOrNewOperation.New: // 1. Adat (model) példányosítása menuItem = new MenuItem(); break; default: throw new Exception($"Erre nem készültünk fel: {op}"); } // 2. Megjelenítési adatok feltöltése (ViewModel) // hogy be tudjuk állítani a lenyílót, megadjuk az aktuális kategória azonosítóját if (menuItem.Category != null) { menuItem.CategoryId = menuItem.Category.Id; } // letöltjük a Categories tábla tartalmát (db.Categories.Tolist()) // megadjuk, hogy melyik mező azonosítja a sort, és adja azt az értéket, ami a végeredmény (Id) // megadjuk, hogy a lenyíló egyes soraiba melyik property értékei kerüljenek (Name) LoadAssignableCategories(menuItem); // menuItem.AssignableCategories = new SelectList(db.Categories.OrderBy(x=>x.Name).ToList(), "Id", "Name"); return(menuItem); }