ef-devart entitydeveloper和syncfusion winform grid之间的Map外键

lf3rwulv  于 2021-07-26  发布在  Java
关注(0)|答案(3)|浏览(363)

我需要一些帮助来理解从sqldb到syncfusion网格控件表示数据的最佳方法。
动物表包含眼睛颜色,皮毛颜色的外键。。。
我可以将devart生成的objectcontext中的objectset添加为syncfusion sfdatagrid的数据源。正如我们在图片上看到的,我们看到了外键。

如果我想显示{rec.coat.name}而不是{rec.coatid},我必须使用unboundcolumn(在这里输入链接描述)。但使用这种方法会带来一些麻烦:syncfusion组件无法对unboundcolumn进行排序。从编者的Angular 来看,没有实施的计划。
那么,使用实体框架将数据(和外键)从sql表转换为winform控件的好数据源的好方法是什么呢?
谢谢你的帮助。
文森特

23c0lvtd

23c0lvtd1#

尝试在linq查询中使用join将结果集中的rec.coatid替换为rec.coat.name:https://docs.microsoft.com/en-us/ef/core/querying/complex-query-operators .

pzfprimi

pzfprimi2#

我们正在使用dataview的sort属性对sfdatagrid中的记录进行排序。如您所知,unbound列不是datatable中绑定到sfdatagrid的实际列。因此,即使应用排序,也不会从框架中获得排序并引发异常,因为对应的列在实际的datatable中不可用。因此,根据您的要求,我们不能提供使用datatable作为数据源的支持。
另一方面,我们建议您可以使用实体框架并将实体集合分配给sfdatagrid。sfdatagrid支持实体框架的未绑定列的排序和所有其他数据操作。因为,我们正在处理我们自己的排序逻辑和所有其他数据操作。您可以参考下面的文章来了解如何使用sql和实体框架。
https://dzone.com/articles/receive-notifications-with-new-values-when-table-r
每当更新服务器端数据时,都将调用sqltabledependency.onchanged方法。因此,您可以在此基础上更新应用程序中的实体。请您仔细阅读以上条款,让我们知道这是否符合您的要求?
当做,
维贾亚拉桑

92vpleto

92vpleto3#

以下是解决方案:

var query0 = from myanimal in this.ctx.Animals
             join animalCoat in this.ctx.Coats on myanimal.CoatId equals animalCoat.Id
                 select new
                 {
                     OwnerName = myanimal.FullName,
                     myanimal.Male,
                     CoatName = animalCoat.Name,
                 };
this.sfDataGrid1.DataSource = query0.ToList();

感谢syncfusion公司的@devart支持和@vijayarasan:)

相关问题