Entity Select SQL (Statement) Query (LINQ, Entity Framework) |
Entity Select SQL (Statement) Query (LINQ, Entity Framework) ปกติการเขียน LINQ to Entities ก็สามารถใช้ที่จะ Select ข้อมูลของ Table ผ่าน Model Entities ได้ด้วยวิธีง่าย ๆ อยู่แล้ว แต่หลายครั้งหลายคนยังเลือกใช้การเชียน SQL ขึ้นมาใช้ ซึ่งบน LINQ to Entities ก็มีฟีเจอร์นี้ ที่จะทำการ Select ข้อมูลผ่าน SQL Statement แล้วค่อยนำ Result ที่ได้นั้นมาแปลงเป็นค่า List ได้เช่นเดียวกัน
Example 1 : การใช้ Entity กับ SQL Statement กับการ Query เพื่อ Select ข้อมูล ให้เป็น List<Object> ตามโครงสร้างของ Table
Code (C#)
private void frmMain_Load(object sender, EventArgs e)
{
// Create new entities from Entities
using (var db = new myDatabaseEntities())
{
// Select
var ds = db.Database.SqlQuery<CUSTOMER>("SELECT * FROM CUSTOMER").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()
' Select
Dim ds = db.Database.SqlQuery(Of CUSTOMER)("SELECT * FROM CUSTOMER").ToList()
' if found item rows
If ds.Count() > 0 Then
Me.myDataGridView.DataSource = ds
End If
End Using
End Sub
จากตัวอย่างนี้จะแปลงค่าให้เป็น List<Object> ตามโครงสร้างของ Table : CUSTOMER
Screenshot
Example 2 : การใช้ Entity กับ SQL Statement กับการ Query เพื่อ Select ข้อมูล ให้เป็น List<Object> ใหม่
Code (C#)
public class CustomerInfo
{
public string CusID { get; set; }
public string CusName { get; set; }
public string CountryName { get; set; }
}
private void frmMain_Load(object sender, EventArgs e)
{
// Create new entities from Entities
using (var db = new myDatabaseEntities())
{
// Select
string strSQL = string.Empty;
strSQL = "SELECT A.CUSTOMER_ID AS CusID,A.NAME AS CusName, B.COUNTRY_NAME AS CountryName ";
strSQL += "FROM CUSTOMER A ";
strSQL += "LEFT JOIN COUNTRY B ON A.COUNTRY_CODE = B.COUNTRY_CODE";
var ds = db.Database.SqlQuery<CustomerInfo>(strSQL).ToList();
// if found item rows
if (ds.Count() > 0)
{
this.myDataGridView.DataSource = ds;
}
}
}
Code (VB.Net)
Public Class CustomerInfo
Public Property CusID() As String
Get
Return m_CusID
End Get
Set(value As String)
m_CusID = Value
End Set
End Property
Private m_CusID As String
Public Property CusName() As String
Get
Return m_CusName
End Get
Set(value As String)
m_CusName = Value
End Set
End Property
Private m_CusName As String
Public Property CountryName() As String
Get
Return m_CountryName
End Get
Set(value As String)
m_CountryName = Value
End Set
End Property
Private m_CountryName As String
End Class
Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' Create new entities from Entities
Using db = New myDatabaseEntities()
' Select
Dim strSQL As String = String.Empty
strSQL = "SELECT A.CUSTOMER_ID AS CusID,A.NAME AS CusName, B.COUNTRY_NAME AS CountryName "
strSQL += "FROM CUSTOMER A "
strSQL += "LEFT JOIN COUNTRY B ON A.COUNTRY_CODE = B.COUNTRY_CODE"
Dim ds = db.Database.SqlQuery(Of CustomerInfo)(strSQL).ToList()
' if found item rows
If ds.Count() > 0 Then
Me.myDataGridView.DataSource = ds
End If
End Using
End Sub
จากตัวอย่างนี้จะแปลงค่าให้เป็น List<Object> ตามโครงสร้างของ Class : CustomerInfo ซึ่งมี Property ตามที่เราต้อการ และ ในการ Select ข้อมูลจะต้องสร้างชื่อ Column ให้เหมือนกับ Property ของ Class
Screenshot
เพิ่มเติม!! ในกรณีที่จะเขียน SQL Query ผ่าน LINQ to Entities ผมไม่แนะนำให้เรียกใช้งานด้วยการ Select ข้อมูลผ่าน Model Entities เช่นเดิม หรือ ในกรณีที่ SQL Query มีความซับซ้อนมาก แนะนำให้เขียนเป็น View แทน แล้วค่อย Add ตัว View เข้ามาใน Model
|
ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท
|
|
|
By : |
ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ) |
|
Score Rating : |
|
|
|
Create/Update Date : |
2015-10-02 21:19:10 /
2017-03-24 23:09:17 |
|
Download : |
No files |
|
Sponsored Links / Related |
|
|
|
|
|
|
|