VIEW Table (LINQ, Entity Framework) |
VIEW Table (LINQ, Entity Framework) เนื่องจาก Entity Framework ด้วย LINQ to Entities ต้องใช้รูปแบบ Syntax ของ LINQ ในการเขียนด้วยภาษาVB.Net หรือ C# ซึ่งในกรณีที่ซับซ้อนมาเกินการเขียนบน Syntax LINQ เพื่อให้ Entities ทำงานได้ตรงกับความต้องการนั้นค่อนข้างจะยากพอสมควร ฉะนั้นหลาย ๆ คำสั่งอาจจะต้องอาศัยการสร้างการเขียน Query บน VIEW Table หรือ Stored Procedure เข้ามาทำงานแทน จะทำงานได้รวดเร็วกกว่าการจัดการที่ Entities และรูปแบบการเขียนนั้นบน SQL จะมีประสิทธิภาพและทำงานบนกกว่าการด้วย LINQ แน่นอน
ตัวอย่าง Table และข้อมูลที่จะทำการสร้าง View Table
View Table
1. SELECT '1' AS COMPCODE, A.CUSTOMER_ID, A. NAME , B.COUNTRY_NAME, A.BUDGET, A.USED, COUNT (C.AUDIT_ID) AS ITEM_AUDIT
2. FROM dbo.CUSTOMER AS A LEFT OUTER JOIN
3. dbo.COUNTRY AS B ON A.COUNTRY_CODE = B.COUNTRY_CODE LEFT OUTER JOIN
4. dbo.AUDIT AS C ON A.CUSTOMER_ID = C.CUSTOMER_ID
5. GROUP BY A.CUSTOMER_ID, A. NAME , B.COUNTRY_NAME, A.BUDGET, A.USED
ทดสอบสร้าง View บน SQL Server

View บน SQL Server Database

กลับมาที่ Model Entities บน Visual Studio เลือก Update Model from Database

เลือกก View ที่เราได้ส้างขึ้นมาใหม่

View ได้เพิ่มมาบน Model เรียบร้อยแล้ว

กลับมาดูที่ Result ของ View เนื่องจาก View เราได้มีการสร้าง Column ใหม่ ที่ไม่ได้มาจาก Table ซึ่งบางครั้งตัว Model จะสร้าง Column นี้ให้เป็น Primary Key ซึ่งเราจะต้องทำการปรับแต่งคา Key บน Model นี้ด้วย
Note!! ตามที่ได้เกริ่นไว้ก่อนหน้านี้ Entity Framework ค่อนข้างจะให้ความสำคัญกับ Key ของ Table , View มาก ซึ่งในกรณีที่ Table หรือ View ที่เราสร้างมาใหม่นั้นมีรายการข้อมูลที่เหมือนกัน โดยไม่มี Primary Key มาเกี่ยวข้อง เมื่อนำไปใช้งานบน LINQ to Entities ตัวโปรแกรมจะไม่สามารถเลื่อน Cursor เพื่อเลือกรายการที่มีค่าที่เหมือนกันได้

Column ที่มาจาก Table แล้วเป็น Primary Key ตัว Model จะมีการกำหนดค่า Entity Key = True อัตโนัมติ

แต่ในกรณีที่ View นั้น ๆ มี Column ที่สร้างจาก Query ของ View เราอาจจะจำเป็นต้องมาปรับแต่ง ในกรณีที่ Column นั้น ๆ เป็น Primary Key
หลังจากทำการเพิ่ม View เข้ามาใน Model เรียบร้อยแล้ว การเรียกใช้งาน View ก็จะใช้หลักการเดียวกับการ Select ข้อมูลจาก Table
Code (C#)
01. private void frmMain_Load( object sender, EventArgs e)
02. {
03.
04. using (var db = new myDatabaseEntities())
05. {
06.
07.
08. var ds = (from c in db.VIEW_CUSTOMER_INFO
09. where c.COMPCODE == "1"
10. select c).ToList();
11.
12.
13. if (ds.Count() > 0)
14. {
15. this .myDataGridView.DataSource = ds;
16. }
17. }
18. }
Code (VB.Net)
01. Private Sub frmMain_Load(sender As Object , e As EventArgs) Handles MyBase .Load
02.
03. Using db = New myDatabaseEntities()
04.
05.
06. Dim ds = (From c In db.VIEW_CUSTOMER_INFO
07. Where c.COMPCODE = "1" Select c).ToList()
08.
09.
10. If ds.Count() > 0 Then
11. Me .myDataGridView.DataSource = ds
12. End If
13. End Using
14. End Sub
Screenshot
|
ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท
|
|
|
By : |
ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ) |
|
Score Rating : |
   |
|
|
Create/Update Date : |
2015-10-02 21:17:21 /
2015-10-06 15:00:44 |
|
Download : |
No files |
|
Sponsored Links / Related |
|
|
|
|
|
|