2014-05-22 101 views
1

如何將其轉換成實體框架轉換SQL到實體框架

Emp 
______ 
EmpID 
Fname 
Lname 
PostID 

Post 
______ 
PostID 
Position 
Select e.Fname, e.Lname, p.Position from Emp e inner join Post p 
on e.PostID = p.PostID 

並綁定到DataGridView的

試用:

var query = db.Employees.Include("Position")  // source 
    .Join(db.Positions,   // target 
     c => c.PosID,   // FK 
     cm => cm.PosID, // PK 
     (c, cm) => new { Employees = c, Positions = cm }) // project result 
    .Select(x => x.Employees).Where(m => m.Fname.Contains(txtSrchFirstName.Text) && m.City.Contains(txtSrchCity.Text)); 
    .Select(x => new { x.EmpID, x.Lname, x.Fname, x.Position, x.City}); // select result 

    GridView1.DataSource = query1.ToList(); 
    GridView1.DataBind(); 
+0

Employees和Positions表之間的關係是什麼?如果在問題中也包含表格關係,則會更好。 –

+0

創建與「PostID」字段的外鍵關係,您可以直接從「位置」查詢而不使用連接。 – tia

回答

1

;從我的頭頂:

var query1 = from e in Emp 
      join p in Post 
      on e.PostID equals p.PostID 
      select new {e.Fname, e.Lname, p.Position}; 
0

jmcihin ney的查詢相當於你的sql查詢,但通常情況下,使用EF,你會嘗試使用導航屬性來訪問相關數據,這樣就不必描述每個查詢中實體之間的關係。

你只需要編寫

var query = from e in db.Employees 
      from p in e.Posts 
      select new { e.EmpID, e.Lname, e.Fname, p.Position, p.City}); 

NB

我不知道在哪裏市從何而來,它不是在原來的查詢,但它是在你的審判,其次,這需要關係要在模型中正確定義(具有導航屬性)。