![]() |
VOOZH | about |
dotnet add package XperienceCommunity.DevTools.QueryExtensions --version 4.0.0
NuGet\Install-Package XperienceCommunity.DevTools.QueryExtensions -Version 4.0.0
<PackageReference Include="XperienceCommunity.DevTools.QueryExtensions" Version="4.0.0" />
<PackageVersion Include="XperienceCommunity.DevTools.QueryExtensions" Version="4.0.0" />Directory.Packages.props
<PackageReference Include="XperienceCommunity.DevTools.QueryExtensions" />Project file
paket add XperienceCommunity.DevTools.QueryExtensions --version 4.0.0
#r "nuget: XperienceCommunity.DevTools.QueryExtensions, 4.0.0"
#:package XperienceCommunity.DevTools.QueryExtensions@4.0.0
#addin nuget:?package=XperienceCommunity.DevTools.QueryExtensions&version=4.0.0Install as a Cake Addin
#tool nuget:?package=XperienceCommunity.DevTools.QueryExtensions&version=4.0.0Install as a Cake Tool
This package provides a set of extension methods for Xperience by Kentico ContentTypeQueryParameters, ContentItemQueryBuilder, WhereParameters, ObjectQuery, and ConnectionHelper's returned IDataReader / DbDataReader data access APIs.
This package is compatible with ASP.NET Core 8 applications or libraries integrated with Xperience by Kentico Versions 31.0.0 +.
| Xperience Version | Library Version |
|---|---|
| >= 31.0.0 | 4.x |
| 30.0.0-30.12.3 | 3.x |
| 29.7.* | 2.1 |
Install the NuGet package in your ASP.NET Core project (or class library)
dotnet add package XperienceCommunity.DevTools.QueryExtensions
Add the correct using to have the extensions appear in intellisense
using XperienceCommunity.QueryExtensions.ContentItems;
using XperienceCommunity.QueryExtensions.Objects;
using XperienceCommunity.QueryExtensions.Collections;
The extension methods are all in explicit namespaces to prevent conflicts with extensions that Xperience might add in the future or extensions that the developer might have already created.
You can apply these globally with C# implicit usings
using XperienceCommunity.QueryExtensions.Objects;
return UserInfo.Provider.Get()
.Tap(q =>
{
// access the query
});
bool condition = ...
var query = UserInfo.Provider.Get()
.If(condition, q =>
{
// when condition is true
});
bool condition = ...
var query = UserInfo.Provider.Get()
.If(condition,
q =>
{
// when condition is true
},
q =>
{
// when condition is false
});
var query = UserInfo.Provider.Get()
.OrderByDescending(nameof(UserInfo.UserLastModified))
.TopN(1)
.DebugQuery();
/*
--- BEGIN [path\to\your\app\Program.cs] QUERY ---
SELECT TOP 1 *
FROM CMS_User
ORDER BY UserLastModified DESC
--- END [path\to\your\app\Program.cs] QUERY ---
*/
var query = UserInfo.Provider.Get()
.OrderByDescending(nameof(UserInfo.UserLastModified))
.TopN(1)
.DebugQuery("User");
/*
--- QUERY [User] START ---
SELECT TOP 1 *
FROM CMS_User
ORDER BY UserLastModified DESC
--- QUERY [User] END ---
*/
public void QueryDatabase(ILogger logger)
{
var query = UserInfo.Provider.Get()
.OrderByDescending(nameof(UserInfo.UserLastModified))
.TopN(1)
.LogQuery(logger, "Logged User Query");
}
var query = UserInfo.Provider.Get()
.TapQueryText(text =>
{
// do something with the query text
});
var query = UserInfo.Provider.Get()
.Source(s => s.InnerJoin<UserSettingInfo>(
"UserID",
"UserSettingUserID",
"MY_ALIAS",
additionalCondition: new WhereCondition("MY_ALIAS.UserWaitingForApproval", QueryOperator.Equals, true),
hints: new[] { SqlHints.NOLOCK }))
.TopN(1)
.DebugQuery("User");
/*
--- QUERY [User] START ---
SELECT TOP 1 *
FROM CMS_User
INNER JOIN CMS_UserSetting AS MY_ALIAS WITH (NOLOCK) ON UserID = MY_ALIAS.UserSettingUserID AND MY_ALIAS.UserWaitingForApproval = 1
ORDER BY UserLastModified DESC
--- QUERY [User] END ---
*/
// ExecuteAsync returns a populated dataset with all the columns returned by the query.
// When there are no results, dataset.Tables[0] will still be populated with an empty DataTable.
var dataset = await UserInfo.Provider.Get()
.Source(source => source
.InnerJoin<UserSettingInfo>(
"UserID",
"UserSettingUserID",
"MY_ALIAS")
.InnerJoin<CustomerInfo>(
"CustomerUserID",
"UserID",
"C",
)
)
.Columns("UserID", "UserSettingID", "CustomerID")
.ExecuteAsync();
foreach (var row in dataset.Tables[0].Rows)
{
Console.WriteLine($"User: {row["UserID"]}, User Setting: {row["UserSettingID"]}, Customer: {row["CustomerID"]}");
}
var dataSet = await XperienceCommunityConnectionHelper.ExecuteQueryAsync("CMS.User", "GetAllUsersCustom");
string queryText = @"
SELECT *
FROM CMS_User
WHERE UserID = @UserID
"
var queryParams = new QueryDataParameters
{
{ "UserID", 3 }
};
var dataSet = await XperienceCommunityConnectionHelper.ExecuteQueryAsync(queryText, queryParams, token: token);
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 was computed. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 was computed. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
Showing the top 2 NuGet packages that depend on XperienceCommunity.DevTools.QueryExtensions:
| Package | Downloads |
|---|---|
|
XperienceCommunity.Baseline.Core.Library.Xperience
The Baseline a set of Core Systems, Tools, and Structure to ensure a superior Kentico Website that's easy to migrate, for Kentico Xperience 13 and eventually Xperience by Kentico |
|
|
Baseline.Core
Baseline v3 Core - Foundation services for Xperience by Kentico including SEO, caching, structured data, and content retrieval. |
This package is not used by any popular GitHub repositories.
Updated to Xperience 31.0.0