【问题标题】:How to combine multiple tables in one dataGridView using Entity Framework?如何使用实体框架在一个 dataGridView 中组合多个表?
【发布时间】:2019-06-05 15:40:40
【问题描述】:

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

我试图在没有SqlConnectionSqlDataAdapter 的情况下这样做,所以连接将通过实体框架进行

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中获取用户+系统+活动表。

【问题讨论】:

    标签: c# winforms entity-framework


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-04
      • 1970-01-01
      • 2016-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多