我有一个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>();
}
因此,我只在一个表的情况下编写,但是如果没有正确地在数据库中进行连接,是否可以串联两个或多个表?
最后,我想在一个dataGridView中获取User + System + Activities表。
答案 0 :(得分:1)
如果您的班级是这样正确定义的:
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();
}
如果您尚未定义导航属性,则可以使用LINQ Join。