1

我正在努力了解如何从使用 linq 到实体的 linq 查询填充的 datagridview 更新 SQL 数据库。

我从三个表中提取数据;具有以下查询的项目、任务和链接任务项:

var itemList = from x in me.LinkMissionItem
    join i in me.items on x.itemID equals i.itemID
    join m in me.Missions on x.missionID equals m.MissionID
    where m.MissionNo == selectedMission
    orderby i.categoryID, i.name
    select new { i.itemID, 
                 i.name, 
                 x.Role, 
                 i.Type.typeName, 
                 i.Category.categoryName, 
                 i.model, 
                 i.serialNo, 
                 i.Origin.originCountry, 
                 i.cost, 
                 x.Packaging };

我知道查询提供了一个匿名类型,从所有三个表中提取一些列并将其绑定到 datagridview,如下所示:

dgvMissionItems.DataSource = itemList.ToList();

使 datagridview 只读。顺便说一句,我目前以编程方式更新 Packaging 字段,没问题。

但是拥有 datagridview 的好处是通过编辑单个单元格来添加或更改其中的数据。我需要允许用户从 linkMissionItem 表中编辑 Role 字段。如果我只用实体 LinkMissionTable 填充数据网格视图(使其可修改),则用户的信息不友好且不清楚。

我误解或正在以错误的方式解决这个问题,我迫切需要一些关于如何完成工作的建议。我还没有在互联网上或在我所拥有的关于这个主题的书中找到任何东西。

4

1 回答 1

0

您应该检索整个实体(以及所需的相关实体),但禁用AutoGenerateColumnsDataGridView 的功能。然后只定义要向用户显示的列,而不是通过将实体和网格数据源重新打包到新对象中来断开它们之间的链接。

于 2013-02-27T07:40:46.770 回答