Конвертировать SQL в Entity Framework

1

Как преобразовать это в инфраструктуру сущности

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();
Теги:
entity-framework

2 ответа

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

Запрос jmcihinney эквивалентен вашему 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

Я не знаю, откуда приходит город, это не в вашем исходном запросе, а в пробной версии, а во-вторых, для этого требуется правильное определение отношения (с навигационным свойством) в модели.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню