コード例 #1
0
ファイル: Program.cs プロジェクト: siposm/oktatas-hft-20211
        static void DeleteFromDb(EDDatabaseEntities db, int empnumber)
        {
            EMP ember = db.EMP.Single(x => x.EMPNO == empnumber);

            db.EMP.Remove(ember);
            db.SaveChanges();
            Console.WriteLine("remove ok");
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: siposm/oktatas-hft-20211
 static void ListEmployees(EDDatabaseEntities db)
 {
     Console.WriteLine("\nEMPLOYEES:");
     foreach (var item in db.EMP)
     {
         Console.WriteLine("> " + item.ENAME + item.EMPNO);
     }
 }
コード例 #3
0
ファイル: Program.cs プロジェクト: siposm/oktatas-hft-20211
        static void UpdateInDb(EDDatabaseEntities db, int empnumber)
        {
            EMP ember = db.EMP.Single(x => x.EMPNO == empnumber);

            ember.ENAME = "Hulk";
            db.SaveChanges();
            Console.WriteLine("update ok");
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: siposm/oktatas-hft-20211
        static void SaveToXML(EDDatabaseEntities db)
        {
            XDocument kimenet = new XDocument();

            kimenet.Add(new XElement("emberek", new XAttribute("darabszam", db.EMP.Count())));

            foreach (var item in db.EMP)
            {
                kimenet.Root.Add(new XElement("nev", item.ENAME));
            }

            kimenet.Save("mentett_embernevek.xml");
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: siposm/oktatas-hft-20211
        static void Main(string[] args)
        {
            // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            //
            // DB LÉTREHOZÁSÁNAK LÉPÉSEI
            //
            // 0.lépés: ha hibát dob a Service Based Database létrehozásakor, akkor fel kell telepíteni a VS_telepítőből a 'Data Storage and Processing' csoportot is
            //      ehhez a vs telepítőt futtasd le megint, klikk a 'Modify' gombra, és ott válaszd ki a fentebbi csomagot pluszban >> install
            //      restart vs és jó lesz, mehet a többi lépés:
            //
            // 1.lépés: jobb klikk projekt >> add new item >> service based database (ha kéri a VS, hogy legyen telepítve SQL valami, akkor telepítsük)
            //
            // 2.lépés: view felső menü >> server explorer >> megjelent a database >> jobb klikk new query >> futtassuk le az sql fájl tartalmát(kiinduló állapot létrehozása)
            //
            // 3.lépés: jobb klikk projekt >> add new item >> ado.net entity data model >> generate from database (első) >> _.mdf fájl kiválasztása
            //
            // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



            EDDatabaseEntities db = new EDDatabaseEntities();

            Console.WriteLine("* connection OK *");

            DEPT reszl = db.DEPT.First();

            Console.WriteLine(reszl.DNAME);

            // ------------------------------------------------------------------

            Console.WriteLine("\nDEPARTMENTS:");
            foreach (var item in db.DEPT)
            {
                Console.WriteLine("> " + item.DNAME);
            }

            // ------------------------------------------------------------------

            // INSERT

            EMP lajos = new EMP()
            {
                ENAME  = "Lomha Lajos", // 11 karakter >> validation error
                DEPTNO = 20,
                MGR    = null,
                EMPNO  = 1000,
                SAL    = 9500
            };

            try
            {
                InsertToDb(db, lajos);
            }
            catch (System.Data.Entity.Validation.DbEntityValidationException ex)
            {
                Console.WriteLine(ex.Message);
                foreach (var entityValidationErrors in ex.EntityValidationErrors)
                {
                    foreach (var validationError in entityValidationErrors.ValidationErrors)
                    {
                        Console.WriteLine("Property: " + validationError.PropertyName + " Error: " + validationError.ErrorMessage);
                    }
                }
            }

            lajos.ENAME = "Lajos";
            InsertToDb(db, lajos);

            // UPDATE

            UpdateInDb(db, 1000);

            // LIST

            ListEmployees(db);

            // DELETE

            DeleteFromDb(db, 1000);

            // SELECT

            Console.WriteLine("\n\n\n");

            foreach (EMP dolgozo in db.EMP.Where(dolgozo => dolgozo.SAL >= 3000))
            {
                Console.WriteLine("> " + dolgozo.ENAME);
            }

            var dolgozok = from x in db.EMP
                           where x.SAL >= 3000
                           select x;

            Console.WriteLine();

            foreach (var item in dolgozok)
            {
                Console.WriteLine("-->" + item.ENAME);
            }


            Console.WriteLine("\n\n");

            // JOIN

            // linq összekötés

            var dolgozok2 = from dolgozo in db.EMP
                            join reszleg in db.DEPT
                            on dolgozo.DEPTNO equals reszleg.DEPTNO
                            select new
            {
                dolgozo.ENAME,
                dolgozo.SAL,
                dolgozo.COMM,
                reszleg.DNAME                 // lásd megjegyzés lentebb
            };

            // megjegyzés!
            // órán néztük: dolgozo.DEPT.DNAME volt a reszleg.DNAME helyére írva >> ez alapból is működik, nem kell join hozzá!!! >> LAZY LOADING
            //
            // pl.: a db.EMP.First().DEPT >> a teljes DEPT entitást visszaadja nekünk, amelyet ugye az EMP entitáson keresztül kérünk le
            //EMP emberEntitas = db.EMP.First();
            //Console.WriteLine(emberEntitas.DEPT.DNAME);


            foreach (var item in dolgozok2)
            {
                Console.WriteLine(item.ENAME + "\t" + item.SAL + "\t" + item.COMM + "\t" + item.DNAME);
            }


            Console.WriteLine("\n\n");

            // lazy loading

            var dolgozok3 = from dolgozo in db.EMP
                            orderby dolgozo.DEPTNO
                            select new
            {
                dolgozo.ENAME,
                dolgozo.SAL,
                dolgozo.COMM,
                dolgozo.DEPT.DNAME                 // itt már lazy loading elvet használunk egyből
            };

            foreach (var item in dolgozok3)
            {
                Console.WriteLine(item.ENAME + "\t" + item.SAL + "\t" + item.COMM + "\t" + item.DNAME);
            }



            // =================================================================================

            Console.WriteLine(); Console.WriteLine(); Console.WriteLine();

            // F1 - részlegenként a dolgozók átlagos jövedelme

            var f1 = from x in dolgozok2
                     group x by x.DNAME into g
                     select new
            {
                csoport       = g.Key,
                darab         = g.Count(),
                atlagKereset  = g.Average(a => a.SAL),
                atlagJuttatas = g.Average(a => a.COMM != null ? a.COMM : 0),
                atlagJovdelem = g.Average(a => a.SAL) + g.Average(a => (a.COMM != null) ? a.COMM : 0)
            };

            foreach (var item in f1)
            {
                Console.WriteLine(item);
            }

            // F2 - legtöbb főt foglalkoztató cég minden adata

            // F3 - legkisebb összfizetésű munkakör (minden adata)

            // F4 - dolgozók akik az elnök felvétele utáni 30 napban érkeztek

            // F5 - módosítsunk minden dolgozót az adatbázisban akik a SALES osztályon dolgoznak
            //      emeljük meg a béren kívüli juttatásukat +500-zal és mentsük el a módosításokat

            // F6 - a RESEARCH osztályon dolgozó, a nevükben 'S' betűvel rendelkező dolgozókat
            //      fokozzuk le, azaz fizetésük felét kapják innentől kezdve csak

            // F7 - mentsük el .xml fájlba a neveket
            SaveToXML(db);

            // használjunk metódus helyett (megfelelő) delegáltat és adjunk hozzá pár extrát még:

            Func <decimal?, int> ValutaValto = x => (int)x * 334;

            Func <EDDatabaseEntities, XDocument> XML_Saver = (x =>
            {
                XDocument kimenet = new XDocument();
                kimenet.Add(new XElement("emberek", new XAttribute("darabszam", x.EMP.Count())));

                foreach (var item in x.EMP)
                {
                    kimenet.Root.Add(new XElement("ember",
                                                  new XAttribute("ID", item.EMPNO),
                                                  new XElement("nev", item.ENAME),
                                                  new XElement("munkakor", item.JOB),
                                                  new XElement("eltoltottMunkaido", DateTime.Now.Year - item.HIREDATE.Value.Year),

                                                  (item.COMM == null)
                            ?
                                                  new XElement("juttatas1", item.SAL, new XAttribute("valuta", "USD"))
                            :
                                                  new XElement("juttatas1", item.SAL + item.COMM, new XAttribute("valuta", "USD")),

                                                  (item.COMM == null)
                            ?
                                                  new XElement("juttatas2", ValutaValto(item.SAL), new XAttribute("valuta", "HUF"))
                            :
                                                  new XElement("juttatas2", ValutaValto(item.SAL + item.COMM), new XAttribute("valuta", "HUF"))

                                                  ));
                }

                return(kimenet);
            });

            XDocument file_to_save = XML_Saver(db);

            file_to_save.Save("delegalt_mentes.xml");
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: siposm/oktatas-hft-20211
 static void InsertToDb(EDDatabaseEntities db, EMP ember)
 {
     db.EMP.Add(ember);
     db.SaveChanges();
     Console.WriteLine("insert ok");
 }