【发布时间】:2013-09-19 11:52:35
【问题描述】:
我有一个实体表达式的 linq:
entities = new zdmEntities();
var reltables = (from r in entities.relations
orderby r.id
select new Relation
{
Id = r.id,
Devices = r.devices.device_name,
Systems = r.systems.system_name,
Models = r.models.name,
Functions = r.functions.function_name
}).ToList();
ultraGrid1.DataSource = reltables.ToList();
class Relation
{
public int Id { get; set; }
public string Devices { get; set; }
public string Systems { get; set; }
public string Models { get; set; }
public string Functions { get; set; }
}
如您所见,关系表包含指向其他表的链接。
Relation 类包含我的数据网格列。 但是有一个问题......网格和数据库之间不可能有两种方式的数据绑定。我手动编写了所有更新,但这非常困难。 我知道这是因为在 linq 表达式中有“新”。但是,如果没有“新”,您如何做到这一点?
如何通过双向数据绑定显示我需要的列,并且没有像“关系”这样的自己的类。 Windows 窗体。不是wpf)
谢谢,亚历克斯。
【问题讨论】:
-
为什么不能绑定到现有的
Relations类? -
所以
r.devices并不是顾名思义的设备列表,而是单个设备(因为您选择了r.devices.device_name)? -
关系表包含 device_id,model_id... 列。 linq 让我通过关系表使用这些表。
-
在 Winforms 中,使用视图模型解耦视图和数据层也是一个好主意。只需数据绑定
Relations(这是一个视图模型)并在提交更改时映射回原始实体。如果您真的需要双向数据绑定,您应该绑定 Id 值并在组合框单元格中使用查找表(显示显示值、绑定 Id 值)。 -
是的,我想过这个,但是需要对每个单元格使用 linq 表达式来查找值
标签: c# .net winforms linq entity-framework