Skip to content

Commit a623776

Browse files
committed
Supports generate C# code for class FetchExpression. Closed #1109
1 parent 4f27619 commit a623776

File tree

4 files changed

+27
-6
lines changed

4 files changed

+27
-6
lines changed

FetchXmlBuilder/Converters/CSharpCodeGenerator.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,14 @@ public static string GetCSharpQueryExpression(QueryExpression QEx, List<EntityMe
3939
}
4040

4141
var coder = new CSharpCodeGenerator(QEx, entities, settings);
42-
var result = coder.GetQueryCode();
42+
var result = coder.GetQueryExpressionCode();
43+
result = string.Join("\n", result.Split('\n').Select(l => Indent(settings.CodeGenerators.Indents) + l));
44+
return result;
45+
}
46+
47+
internal static string GetCSharpFetchExpression(string fetch, FXBSettings settings)
48+
{
49+
var result = $"var query = new FetchExpression(@\"{fetch.Replace("\"", "'")}\");";
4350
result = string.Join("\n", result.Split('\n').Select(l => Indent(settings.CodeGenerators.Indents) + l));
4451
return result;
4552
}
@@ -57,7 +64,7 @@ private CSharpCodeGenerator(QueryExpression QEx, List<EntityMetadata> entities,
5764

5865
#region General
5966

60-
private string GetQueryCode()
67+
private string GetQueryExpressionCode()
6168
{
6269
var qename = GetVarName(GetQueryObjectName(settings.QExStyle));
6370
var queryclass = QExStyle.StyleClassName(settings.QExStyle);
@@ -1424,6 +1431,12 @@ internal static QExStyle[] GetComboBoxItems()
14241431
ClassName = "Microsoft.CrmSdk.CoreAssemblies",
14251432
HelpUrl = "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/org-service/samples/retrieve-multiple-queryexpression-class",
14261433
},
1434+
new QExStyle {
1435+
Tag = QExStyleEnum.FetchExpression,
1436+
Creator = "Microsoft",
1437+
ClassName = "Microsoft.CrmSdk.CoreAssemblies",
1438+
HelpUrl = "https://learn.microsoft.com/power-apps/developer/data-platform/org-service/entity-operations-query-data",
1439+
},
14271440
new QExStyle
14281441
{
14291442
Tag = QExStyleEnum.QueryByAttribute,

FetchXmlBuilder/DockControls/XmlContentControl.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
using Rappen.XTB.FetchXmlBuilder.Extensions;
88
using Rappen.XTB.FetchXmlBuilder.Forms;
99
using Rappen.XTB.FetchXmlBuilder.Settings;
10-
using Rappen.XTB.Helpers;
1110
using Rappen.XTB.XmlEditorUtils;
1211
using System;
1312
using System.Collections.Generic;
@@ -1012,6 +1011,7 @@ Do you like that idea?
10121011
"https://github.com/rappen/FetchXMLBuilder/issues/859");
10131012
break;
10141013

1014+
case QExStyleEnum.FetchExpression:
10151015
case QExStyleEnum.FetchXML:
10161016
rbQExObjectinitializer.Enabled = false;
10171017
cmbQExFlavor.Enabled = false;
@@ -1022,8 +1022,6 @@ Do you like that idea?
10221022
{
10231023
cmbQExFlavor.SelectedIndex = 0;
10241024
}
1025-
numQExIndent.Value = 0;
1026-
numQExIndent.Enabled = false;
10271025
break;
10281026
}
10291027
UpdateXML(initializating ? waitmessage : fxb.GetCSharpCode());

FetchXmlBuilder/FetchXmlBuilder.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -337,10 +337,19 @@ internal string GetCSharpCode()
337337
var fetch = dockControlBuilder.GetFetchString(true, false);
338338
return CSharpCodeGeneratorFetchXML.GetCSharpFetchXMLCode(fetch, settings.CodeGenerators);
339339

340+
case QExStyleEnum.FetchExpression:
341+
try
342+
{
343+
return CSharpCodeGenerator.GetCSharpFetchExpression(dockControlBuilder.GetFetchString(true, false), settings);
344+
}
345+
catch (Exception ex)
346+
{
347+
return $"/*\nFailed to generate C# FetchExpression code.\n\n{ex.Message}\n*/";
348+
}
340349
default:
341350
try
342351
{
343-
var QEx = dockControlBuilder.GetQueryExpression(false);
352+
var QEx = dockControlBuilder.GetQueryExpression();
344353
return CSharpCodeGenerator.GetCSharpQueryExpression(QEx, entities, settings);
345354
}
346355
catch (FetchIsAggregateException ex)

FetchXmlBuilder/Settings/FXBSettings.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,7 @@ public class CodeGenerators
312312
public enum QExStyleEnum
313313
{
314314
QueryExpression,
315+
FetchExpression,
315316
QueryByAttribute,
316317
OrganizationServiceContext,
317318
QueryExpressionFactory,

0 commit comments

Comments
 (0)