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
SELECT '1' AS COMPCODE, A.CUSTOMER_ID, A.NAME, B.COUNTRY_NAME, A.BUDGET, A.USED, COUNT(C.AUDIT_ID) AS ITEM_AUDIT
FROM dbo.CUSTOMER AS A LEFT OUTER JOIN
dbo.COUNTRY AS B ON A.COUNTRY_CODE = B.COUNTRY_CODE LEFT OUTER JOIN
dbo.AUDIT AS C ON A.CUSTOMER_ID = C.CUSTOMER_ID
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#)
private void frmMain_Load(object sender, EventArgs e)
{
// Create new entities from Entities
using (var db = new myDatabaseEntities())
{
// Get data from VIEW_CUSTOMER_INFO
var ds = (from c in db.VIEW_CUSTOMER_INFO
where c.COMPCODE == "1"
select c).ToList();
// if found item rows
if (ds.Count() > 0)
{
this.myDataGridView.DataSource = ds;
}
}
}
Code (VB.Net)
Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' Create new entities from Entities
Using db = New myDatabaseEntities()
' Get data from VIEW_CUSTOMER_INFO
Dim ds = (From c In db.VIEW_CUSTOMER_INFO
Where c.COMPCODE = "1" Select c).ToList()
' if found item rows
If ds.Count() > 0 Then
Me.myDataGridView.DataSource = ds
End If
End Using
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 |
|
|
|
|
|