วันพฤหัสบดีที่ 24 เมษายน พ.ศ. 2557

การ Join ตาราง 3 ตาราง เปรียบเทียบ SQL,LINQ,Lambda โดยใช้ C#

ตัวอย่าง จะ Join ตาราง 3 ตาราง
ได้แก่   MANU_USER,MANU_DETAIL,MANU_ACTION


แบบที่ 1  SQL

Select u.MANU_USER,d.MANU_NAME,a.MANU_ACTNAME

from MANU_DETAIL d join MANU_USER u

on u.MANU_ID = d.MANU_ID

join MANU_ACTION a

on u.MANU_ACTID = a.MANU_ACTID




แบบที่ 2 LINQ 

using(var db = new MANUContext())
{
    var query = (
                        from d in db.MANU_DETAIL
                        join  u in db.MANU_USER
                           on  d.MANU_ID equals  u.MANU_ID
                        join  a in db.MANU_ACTION
                            on  d.MANU_ACTID equals a.MANU_ACTID
                        select new
                                   {
                                        u.MANU_USER,
                                        d.MANU_NAME,
                                        a.MANU_ACTNAME

                                    }
                         ).ToList();
}




แบบที่ 3 LAMPDA
       using(var db = new MANUContext()
      {
          var query = db.MANU_DETAIL.JOIN
                             (
                              db.MANU_USER, d => d.MANU_ID , u => u.MANU_ID,(d,u) => new
                                    {
                                          u.MANU_USER,
                                          d.MANU_ACTID,
                                          d.MANU_NAME
                                     }
                              )
                              .join
                              (
                              db.MANU_ACTION,o => o.MANU_ACTID , a => a.MANU_ACTID,(o,a) =new
                               {
                                          o.MANU_USER,
                                          o.MANU_NAME,
                                          a.MANU_ACTNAME
                               }
                               ).ToList();
           }

วันพุธที่ 23 เมษายน พ.ศ. 2557

การเขียน Windows Application โดยใช้ C# โดยใช้เครื่องมือ Entity Framework ทางลัด ครั้งที่ 2(เปรียบเทียบ Query โดย SQL Command,LinQ,Lambda)

-เมือทำการ เชื่อต่อ ฐานข้อมูลแล้ว จะทดสอบดึงข้อมูลจากฐานข้อมูลออกมาแสดง

- ขั้นแรกสร้าง DataGridView ขึ้นมา 3 อัน
สำหรับ LINQ,Lambda,SQL Command

- จากนั้นเขียนคำสั่ง ลงไป ถึงข้อมูลจาก Database 3 แบบ ด้วยกัน
- ผลลัพธ์ ทีไ่ด้
- ผลลัพธ์ที่ได้จะคล้ายกัน แต่จุดต่งที่มองเห็น เป็นต้น คือ



1.SQL Command จะรู้ได้ว่าคำสั่ง SQL ถูกต้องเปล่า ต้องไป Run ใน SQL Server ก่อน
2.LINQ สามารถ Debug รันผล และตรวจผลลัพท์ได้เลย ใน Visual Studio 2013 และสามารถปรับแต่งได้มากขึ้น
3. Lambda จะเขียนคำสั่งที่สั้นที่สุด และสะดวกที่สุด แต่ต้องมีความชำนาญ จะสะดวกมาก

ในรูปแบบทั้ง 3 จะมีความแตกต่างกันมากกว่านี้ 


การเขียน Windows Application โดยใช้ C# โดยใช้เครื่องมือ Entity Framework ทางลัด ครั้งที่ 1

เครื่องมือที่ใช้ 
Visual Studio 2013 
SQL Server 

Database First
    - ขั้นแรกให้ออกแบบ ฐานข้อมูล จากนั้น เชื่อมความสัมพันธ์ ให้ครบ ก่อน ใน SQL Server 2008
- เริ่มต้น สร้าง Project 

- ทำการเชื่อมต่อฐานข้อมูล โดยใช้ ADO.NET Entity Framework > Right Click Project > Add > New Item > Data > ADO.NET Entity Data Model ระบุชื่อ Name กด ADD
-- เลือก Generate From Database
- กดปุ่ม New Connection > เลือก Data source เป้น Database ที่ใช้งาน เลือก Server name ระบุการเข้าถึง โดย Sql Server Authentication หรือ Windows Authentication ก็ได้ จากนั้นเลือก ฐานมูลที่ใช้


จากนั้น เลือก Yes, Include the sensitive data in the connection string เลือกการเชื่อมต่อ ซึ่งการเชื่อมต่อจะใช้ Connection String จะอยู่ใน Web.config ระบุชื่อ Entity ซะ

- จากนั้นระบบจะให้เลือก ฐานข้อมูลที่จะใช้งาน ซึ่งความสัมพัมธ์จะได้ตาม Diagram ที่สร้างขั้นต้น และระบุชื่อ Model ซะ
-โปรแกรมจะ สร้าง Model ให้เราตามฐานข้อมูล ซึ่งเป็นลักษณะของ Database Object



วันอังคารที่ 22 เมษายน พ.ศ. 2557

การเขียนเว็บ โดยใช้ C# โดยใช้เครื่องมือ Entity Framework ทางลัด ครั้งที่ 2(สร้าง Insert Update Delete View) ต่อ

-จากครั้งที่ 1 เราสามารถเชื่อมต่อกับฐานข้อมูลได้แล้ว ต่อไป จะเป็นการสร้าง Insert Update Delete View
โดยจะสร้างโดยใช้เครื่องมือของ Visual studio 2013

-ทำการคลิกขวาที่ Controllers > Add > Controller เพื่อสร้าง Controller ตาม Database ที่ดึงเข้ามาในโปรแกรม นั้นคือ Object Database นั้นเอง

-เลือก MVC 5 Controller with views,Using Entity Framework คือให้สร้าง Controller และ สร้าง View  โดยให้โปรแกรมสร้าง Insert Update Delete view ให้ด้วย จากนั้นเราค่อยมาแก้ไข เอง Class ที่ได้จะเป็น Class ที่สะอาด ที่เรียกว่า POCO


- ในหน้า AddController ให้ระบุชื่อ Controller Name ระบุ Model Class คือ ฐานข้อมูลที่จะสร้าง Insert Update Delete View ต่อมาให้ระบุ Data Context Class นั้นเอง กด Add
-  ระบบจะสร้าง Controller และ View ขึ้นมาให้ตามที่เราระบุ นั้นเอง และยังสร้าง หน้า HTML สำหรับ Create Delete Details Edit Index ให้ด้วย  โปรแกรมจะสร้าง Code ให้ทั้งหมด โดยให้เราเลือกปรับแต่งตามแต่ถนัดได้ทันที
- เราลองมาปรับ Link ในหน้าแรก ให้สามารถเรียกดู HTML ที่ระบบสร้างให้ โดยเว็บจะทำงานแรกสุดที่ _ViewStart.cshtml  จากนั้น จะทำงานที่ _Layout.cshtml ซึ่งเป็นหน้าแรกที่ต้องมาแก้ไข ข้อมูลกัน
-ซึ่งในตัวอย่างจะเป็นการแสดงตาราง Menu จากฐานข้อมูลที่ชื่อ Manu Detail เมื่อกด Link เข้าไปยัง Homepage Index จะแสดง รายละเอียด ออกมาจากฐานข้อมูลทั้งหมด โดยสามารถ กด เลือก Create,Edit,Details,Delete ได้ทันที โดยเราสามารถปรับแต่ง Code ให้เป็นไปตามที่เราต้องการได้ทันที
- เมื่อเรากด Create New เราจะพบว่า ใน Combo Box ที่มีความสัมพัมธ์ กับตารางอื่น ระบบ จะสร้างความสัมพันธ์ให้ทันที เมื่อกดดูจะแสดง รายละเอียดในตารางที่มีความสัมพันธ์ด้วย
-แสดงตัวอย่าง Edit,Details,Delete



จบ ครั้งที่ 2

การเขียนเว็บ โดยใช้ C# โดยใช้เครื่องมือ Entity Framework ทางลัด ครั้งที่ 1

- ใช้เครื่องมือ Visual Studio 2003
- SQL Server 2008 R2

บทความชุดที่ 1 จะพูดถึง เขียนเว็บโดยใช้ Entity Framework 

1.Database First
    - ขั้นแรกให้ออกแบบ ฐานข้อมูล จากนั้น เชื่อมความสัมพันธ์ ให้ครบ ก่อน ใน SQL Server 2008 R2
           

- จากนั้นเปิดโปรแกรม Visual Studio 2013
-จากนั้นจะมีตัวเลือก New ASP.Net Project โดยเราจะเลือก MVC และกดปุ่ม Chang Authentication จะเป็นการสร้าง การ LOGIN โดย ธรรมดา โปรแกรมจะเลือก Individual User Accounts อยู่แล้ว หากไม่ต้องการต้องการสร้างเอก ให้เลือก No Authentication จากนั้นกดปุ่ม OK
 // หากเลือก Individual User Accounts ระบบจะจำลอง Database การ Login ซึ่งจะอยู่ภายใน โปรแกรม VS 2013 เอง หากต้องการให้ขึ้น ฐานข้อมูลจริง ต้องทำการเปลี่ยนที่อยู่ ใน Web.config จากนั้น ใช้ Migration สำหรับ ให้โปรแกรม เปลี่ยนที่ Database มาใช้ Database ตัวจริง และให้สร้าง ฐานข้อมูล มาให้ด้วย จะกล่าวใน บทถัดไป


-เมื่อ กด OK จะโปรแกรมจะสร้าง Web เริ่มต้นมาให้ ซึ่งจะมี Controllers Home คือหน้าเริ่มต้นมาให้ โดยอัตโตโนมัติ
-โปรแกรมจะสร้าง เว็บซึ่งมีโครงสร้าง MVC ขึ้นโดยประกอบด้วย
  1. M = Model คือ ทำหน้าที่เหมือนแม่พิมพ์ แม่แบบ กับ ฐานข้อมูล ซึ่งจะอยู่ในรุปของ Object
  2. V = View คือ ทำหน้าที่ติดต่อ กับผู้ใช้งาน 
  3. C = Controller คือ ทำหน้าที่จัดการข้อมูล และติดต่อกับ ฐานข้อมุล เช่น เพิ่ม อัพเดต ลบ
ซึ่งสังเกตุใน Controller เช่น HomeController ก็จะมี View Home ทำงานคู่กัน ซึ่งใน View ก็จะมีไฟล์ cshtml คือ Razor Html ติดต่อกันเสมอ 


- ต่อไปจะเริ่มต้น ดึงต้นแบบจาก ฐานข้อมุลที่สร้าง มาในโปรแกรมโดยกดAdd ที่โปรเจ็ค > เลือก New Item จากนั้นเลือก Data  > ADO.Net Entity Data Model > ใส่ชื่อ กด ADD


- เลือก Generate From Database
- กดปุ่ม New Connection > เลือก Data source เป้น Database ที่ใช้งาน เลือก Server name ระบุการเข้าถึง โดย Sql Server Authentication หรือ Windows Authentication ก็ได้ จากนั้นเลือก ฐานมูลที่ใช้


จากนั้น เลือก Yes, Include the sensitive data in the connection string เลือกการเชื่อมต่อ ซึ่งการเชื่อมต่อจะใช้ Connection String จะอยู่ใน Web.config ระบุชื่อ Entity ซะ

- จากนั้นระบบจะให้เลือก ฐานข้อมูลที่จะใช้งาน ซึ่งความสัมพัมธ์จะได้ตาม Diagram ที่สร้างขั้นต้น และระบุชื่อ Model ซะ

- เมื่อกด Finished ระบบจะทำการสร้าง DBContext มาให้ ตามความสัมพันธ์ที่เราสร้างไว้ตอนแรกสุด  โดยเรียกใช้งานผ่านชื่อ Context เชื่อมไปยังฐานข้อมูลต่างๆได้ ที่ได้คือ ฐานข้อมูลที่อยู่ในรูปแบบ ของ Object เรียบร้อย


จบบทที่ 1