Добро пожаловать в LLBLGen! Отличный продукт, когда вы учитесь. Один из способов получить информацию из разных объединенных таблиц - это типизированный список вашего собственного дизайна.
Ваши «мои конкретные поля» определяются в окне «Результаты». Предложение WHERE определяется с помощью IPredicateExpression. Ваши предложения JOIN блестяще обрабатываются свойствами IRelationCollection и .Relations для каждого объекта.
При попытке получить скорость, запуск профилировщика SQL Server (предположим, что вы используете MSSQL) является ключом, чтобы увидеть, как ваш код изменяется в LLBLGen, влияет на фактический SQL, запрошенный с сервера. Управление всеми() в предложениях JOIN и WHERE иногда требует тщательного упорядочения, но большую часть времени работает с первой попытки. Вот общий фрагмент, который мы используем:
private static DataTable GetTheGoodsOnEmployeeClients()
{
// Define the fields that you want in your result DataTable
ResultsetFields fields = new ResultsetFields(2);
fields.DefineField(MyEntityFields.FieldName1, 0);
fields.DefineField(MyEntityFields.FieldName2, 1, "Field Name Alias");
// Add the WHERE clause to the query - "Condition" can be a literal or a variable passed into this method
IPredicateExpression filter = new PredicateExpression();
filter.Add(MyEntityFields.FieldName == "Condition");
// Add all JOIN clauses to the relation collection
IRelationCollection relations = new RelationCollection();
relations.Add(MyEntity.Relations.FKRelationship);
relations.Add(MyEntity.Relations.FKRelationship, JoinHint.Left);
ISortExpression sort = new SortExpression();
sort.Add(MyEntityFields.FieldName | SortOperator.Ascending);
// Create the DataTable, DAO and fill the DataTable with the above query definition/parameters
DataTable dt = new DataTable();
TypedListDAO dao = new TypedListDAO();
dao.GetMultiAsDataTable(fields, dt, 0, sort, filter, relations, false, null, null, 0, 0);
return dt;
}
Ваши конкретные потребности:
SELECT (my specific fields)
FROM [client].[List] abl
INNER JOIN [client].ClientGroup cg ON cg.ClientGroupId = abl.ClientGroupId
бы, таким образом, стать:
private static DataTable GetTheGoodsOnEmployeeClients()
{
// Define the fields that you want in your result DataTable
ResultsetFields fields = new ResultsetFields(3);
fields.DefineField(ClientFields.ClientId, 0);
fields.DefineField(ClientFields.ClientName, 1, "Client");
fields.DefineField(ClientGroupFields.ClientGroupName, 2, "Group");
// Add all JOIN clauses to the relation collection
IRelationCollection relations = new RelationCollection();
relations.Add(ClientEntity.Relations.ClientGroupEntityUsingClientGroupId);
// Create the DataTable, DAO and fill the DataTable with the above query definition/parameters
DataTable dt = new DataTable();
TypedListDAO dao = new TypedListDAO();
dao.GetMultiAsDataTable(fields, dt, 0, null, null, relations, false, null, null, 0, 0);
return dt;
}
Хотя это кажется как много кода, чтобы сделать что-то Basic, код почти записывается сразу после того, как вы привыкли к нему, и намного быстрее, чем писать сантехнику. Ты никогда не вернешься.
Я думаю, я просто пытаюсь выяснить, как использовать тип отношений. Мне тяжело найти хорошую документацию на llblgen. –
Что, кроме собственных документов LLBLGen и форумов поддержки пользователей - довольно часто цитируется здесь как одна из основных причин, чтобы пойти с LLBLGen :-) – Matt