C# 如何使用实体框架在一个dataGridView中组合多个表?
我有一个Windows窗体应用程序,希望在单个dataGridView区域中从数据库的多个表中获取信息 我尝试在不使用SqlConnection和SqlDataAdapter的情况下进行连接,因此连接将通过实体框架进行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
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();
}