【发布时间】:2009-08-26 18:28:22
【问题描述】:
我目前在 LLBLGen 中有两个实体,并希望将它们合并在一起以输出到一个表,以便在 DevExpress GridControl 中使用,就像两个表通过内部连接连接在一起一样。
有谁知道如何用 LLBLGen 做到这一点?
【问题讨论】:
-
一种选择是在设计器中创建一个 TypedList。过去我在这方面取得了成功。
标签: .net orm llblgenpro
我目前在 LLBLGen 中有两个实体,并希望将它们合并在一起以输出到一个表,以便在 DevExpress GridControl 中使用,就像两个表通过内部连接连接在一起一样。
有谁知道如何用 LLBLGen 做到这一点?
【问题讨论】:
标签: .net orm llblgenpro
如果您使用的是 LLBLGen 2.6,则可以使用 LINQ 使用 LLBLGen LINQ Provider 来展平输出。
(伪代码)正在路上的东西
var flat = from x in db.entitiesa()
from y in db.entitiesb()
select new { x.Name, y.Address }
然后将变量 'flat' 扔给网格控件。
【讨论】:
然后另一种方法是创建一个动态列表(下面的代码来自帮助文件) - 不幸的是它非常冗长。
DataAccessAdapter adapter = new DataAccessAdapter();
ResultsetFields fields = new ResultsetFields(3);
fields.DefineField(EmployeeFields.FirstName, 0, "FirstNameManager", "Manager");
fields.DefineField(EmployeeFields.LastName, 1, "LastNameManager", "Manager");
fields.DefineField(EmployeeFields.LastName, 2, "AmountEmployees", "Employee", AggregateFunction.Count);
IRelationPredicateBucket bucket = new RelationPredicateBucket();
bucket.Relations.Add(EmployeeEntity.Relations.EmployeeEntityUsingEmployeeId, "Employee", "Manager", JoinHint.None);
IGroupByCollection groupByClause = new GroupByCollection();
groupByClause.Add(fields[0]);
groupByClause.Add(fields[1]);
DataTable dynamicList = new DataTable();
adapter.FetchTypedList(fields, dynamicList, bucket, 0, null, true, groupByClause);
【讨论】: