Как объединить несколько таблиц в один dataGridView, используя Entity Framework? - PullRequest
0 голосов
/ 05 июня 2019

У меня есть приложение Windows Forms, и я хочу получить информацию из нескольких таблиц моей базы данных в одной области dataGridView.

Я пытаюсь сделать это без SqlConnection и SqlDataAdapter, поэтому соединение будет проходить через Entity Framework

DBContext db = new DBContext

Возможно ли это сделать?

У меня есть три таблицы:

Пользователь:

UserID,
Name

Система:

SysID,
SysType

Деятельность:

ActivID,
UserID (FK)
SysID (FK)
Date,
Version,
Changes

Мой код:

using DBContext db = new DBCntext())
{
    dataGridView.DataSource = db.Table.ToList<Table>();
}

Итак, я бы написал в случае только одной таблицы, но можно ли объединить две или более таблиц без этого прямо в базе данных?

В конце я хочу получить таблицы User + System + Activities внутри одного dataGridView.

1 Ответ

1 голос
/ 05 июня 2019

Если ваш класс правильно определен так:

public class Activity
{
    public int ActivityID { get; set; }
    public string Version{ get; set; }
    public DateTime Date { get; set; }
    public string Changes { get; set; }

    public int UserID { get; set; }
    public User User { get; set; }  // navigation property for User
    public int SystemID { get; set; }
    public System System { get; set; }  // navigation property for System
}

Теперь вы можете написать запрос:

using DBContext db = new DBCntext())
{
    dataGridView.DataSource = db.Activitys
        .Include(a => a.User)
        .Include(a => a.System)
        .Select(a => new MyModel {
            MyModel.ActivityID = a.ActivityID,
            MyModel.Version= a.Version,
            MyModel.Date = a.Date ,
            MyModel.Changes = a.Changes,
            MyModel.UserName = a.User.Name,
            MyModel.SysType= a.System.SysType
        })
        .ToList();
}

Если вы не определили свойства навигации, то вы можете использоватьa LINQ Join .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...