Мне было поручено написать приложение winforms C#, которое позволяет пользователям запускать специальные запросы. Я искал в Интернете и нашел много инструментов, которые можно купить (EasyQuery), но на этот раз покупка не может быть и речи.Написание инструмента динамического запроса Winforms
Так что я пытаюсь написать это сам. В этот момент я создал древовидное представление, которое заполняется во время выполнения таблицами/столбцами, и я могу выбрать столбцы, проверенные пользователями. Но теперь я должен выяснить, как динамически JOIN
выбранных им таблиц.
Частичная структура таблицы ниже:
Table - Roles - PK = RoleId
RoleId
RoleName
Table - Center PK = CenterId/RoleId/Prefix
CenterId
RoleId
Prefix
Table - Employee - PK = EmployeeID
EmployeeId
Name
CenterId
Dept
Org
Table - Prof - PK = EmployeeId/Profile
EmployeeId
Profile
У меня есть в общей сложности 6 таблиц, которые могут быть соединены в различных областях, но так как пользователи должны присоединиться на лету мне нужно, чтобы определить JOIN
когда они хотят сгенерировать SQL. На данный момент я не знаю, как лучше всего начать генерировать эти JOINs
.
Я даже подумал о создании таблицы в базе данных с JOINs
, указанным для каждой таблицы/столбца, а затем я мог бы просто создать ее там, но я в недоумении.
Я также пытался что-то похожее на это, но я не хочу, чтобы начать вниз неверный путь, если есть предложения по-разному:
private void GetJoins()
{
string joinList = string.Empty;
foreach (TreeNode tn in TablesTreeView.Nodes)
{
if (tn.Checked)
if (tn.Nodes.Count > 0) // this would be parent items only
{
foreach (TreeNode childNode in tn.Nodes)
{
// for first child checked
// check the next checked parent nodes for matching checked fields
// if next parent node has same field name checked then add the JOIN
}
}
}
}
кажется ли это, как он находится на правильном пути или вы можете предложить другой способ?
Я знаю, что это будет невероятно трудная задача, и я еще не дошел до динамического предложения WHERE
. Я просто ищу совет по наилучшему способу создания JOINs
на разовой основе.
Ваши затраты на сборку действительно меньше, чем $ 1350? –
В настоящее время нет бюджета для покупки внешнего продукта. – Taryn