C# 如何使用实体框架在一个dataGridView中组合多个表?

C# 如何使用实体框架在一个dataGridView中组合多个表?,c#,winforms,entity-framework,C#,Winforms,Entity Framework,我有一个Windows窗体应用程序,希望在单个dataGridView区域中从数据库的多个表中获取信息 我尝试在不使用SqlConnection和SqlDataAdapter的情况下进行连接,因此连接将通过实体框架进行 DBContext db = new DBContext 有可能吗 我有三张桌子: 用户: 系统: SysID, SysType 活动: ActivID, UserID (FK) SysID (FK) Date, Version, Changes 我的代码: using D

我有一个Windows窗体应用程序,希望在单个dataGridView区域中从数据库的多个表中获取信息

我尝试在不使用SqlConnection和SqlDataAdapter的情况下进行连接,因此连接将通过实体框架进行

DBContext db = new DBContext
有可能吗

我有三张桌子:

用户:

系统:

SysID,
SysType
活动:

ActivID,
UserID (FK)
SysID (FK)
Date,
Version,
Changes
我的代码:

using DBContext db = new DBCntext())
{
    dataGridView.DataSource = db.Table.ToList<Table>();
}
因此,我将在只有一个表的情况下编写,但是否有可能连接两个或多个表,而不在数据库中正确执行该操作


最后,我想在一个dataGridView中获取用户+系统+活动表。

如果您的类定义正确,如下所示:

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();
}
如果尚未定义导航属性,则可以使用

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();
}