﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="https://community.devexpress.com/feed-stylesheets/atom.xsl" media="screen"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
  <title type="text">XPO Team Blog</title>
  <subtitle type="text">XPO abstracts the database layer, keeping you completely in the object-oriented realm. XPO is flexible enough to help you solve a wide range of tasks, starting from simple WinForms, Console, ASP.NET, Xamarin and WPF applications, all the way up to data services and complex n-tier solutions that are compatible with multiple database systems.</subtitle>
  <id>https://community.devexpress.com/Blogs/xpo/atom</id>
  <updated>2026-06-09T00:53:03Z</updated>
  <link rel="alternate" href="https://community.devexpress.com/Blogs/xpo/default.aspx" />
  <entry>
    <id>https://community.devexpress.com/Blogs/xpo/archive/2021/11/09/xpo-2-7m-downloads-visual-studio-2022-support-visual-designer-coming-soon-secure-web-api-service-generation-made-easier.aspx</id>
    <title type="text">XPO - 2.7M Downloads, Visual Studio 2022 Support (Visual Designer) Coming Soon, Secure Web API Service Generation Made Easier</title>
    <published>2021-11-09T00:31:00Z</published>
    <updated>2026-06-09T00:53:03Z</updated>
    <author>
      <name>Dennis Garavsky (DevExpress)</name>
    </author>
    <link rel="alternate" href="https://community.devexpress.com/Blogs/xpo/archive/2021/11/09/xpo-2-7m-downloads-visual-studio-2022-support-visual-designer-coming-soon-secure-web-api-service-generation-made-easier.aspx" />
    <category term="OData" scheme="https://community.devexpress.com/Tags/OData" />
    <category term="ORM Data Model Wizard" scheme="https://community.devexpress.com/Tags/ORM+Data+Model+Wizard" />
    <category term="REST" scheme="https://community.devexpress.com/Tags/REST" />
    <category term="SAP HANA" scheme="https://community.devexpress.com/Tags/SAP+HANA" />
    <category term="security" scheme="https://community.devexpress.com/Tags/security" />
    <category term="Swagger" scheme="https://community.devexpress.com/Tags/Swagger" />
    <category term="usability" scheme="https://community.devexpress.com/Tags/usability" />
    <category term="Visual Studio 2022" scheme="https://community.devexpress.com/Tags/Visual+Studio+2022" />
    <category term="VS2022" scheme="https://community.devexpress.com/Tags/VS2022" />
    <category term="Web API" scheme="https://community.devexpress.com/Tags/Web+API" />
    <category term="XAF" scheme="https://community.devexpress.com/Tags/XAF" />
    <category term="XPO" scheme="https://community.devexpress.com/Tags/XPO" />
    <content type="html">&lt;h2&gt;XPO ORM – It’s Free and Will Remain Free&lt;/h2&gt;&lt;p&gt;A quick reminder: XPO ORM is available free-of-charge. To obtain your free copy, point your browser to: &lt;a href="https://www.nuget.org/packages/DevExpress.Xpo/" target="_blank"&gt;https://www.nuget.org/packages/DevExpress.Xpo&lt;/a&gt; (and feel free to share this link with friends/colleagues).&lt;br&gt;&lt;/p&gt;&lt;p&gt;Before I describe our near-term plans for XPO ORM, I’d like to quickly mention a few enhancements of note for the ever-evolving .NET world:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://docs.devexpress.com/CoreLibraries/402860/devexpress-data-library/linq-like-criteria-syntax" target="_blank"&gt;CriteriaOperator.FromLambda&lt;/a&gt;&amp;nbsp;(for LINQ-like criteria syntax)&lt;/li&gt;&lt;li&gt;&lt;a href="https://docs.devexpress.com/XPO/403009/connect-to-a-data-store/xpo-extensions-for-aspnet-core-di"&gt;XPO Dependency Injection Extensions (f&lt;/a&gt;or ASP.NET Core)&lt;/li&gt;&lt;li&gt;&lt;a href="https://docs.devexpress.com/XPO/403008/connect-to-a-data-store/create-an-asp-net-core-web-api-crud-service"&gt;An ASP.NET Core Web API CRUD Service&lt;/a&gt;&amp;nbsp;(for &lt;a href="https://github.com/DevExpress/XPO/tree/master/Tutorials" target="_blank"&gt;WebAssembly &amp;amp; Xamarin&lt;/a&gt;/MAUI development&amp;nbsp;&amp;amp;&amp;nbsp;&lt;a href="https://docs.devexpress.com/XPO/403008/connect-to-a-data-store/create-an-asp-net-core-web-api-crud-service#how-the-xpo-json-serialization-works" target="_blank"&gt;System.Text.Json Support&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;As you probably know, XPO is available for use across all major .NET UI platforms including WinForms, WPF, ASP.NET, Xamarin, MAUI, and XAF (&lt;a href="https://github.com/DevExpress/XPO/tree/master/Tutorials" target="_blank"&gt;GitHub tutorials&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;XPO is also at the core of many commercial DevExpress products including &lt;a href="https://www.devexpress.com/Products/NET/Dashboard/"&gt;BI Dashboard&lt;/a&gt;,&amp;nbsp;&lt;a href="https://www.devexpress.com/Subscriptions/Reporting/"&gt;DevExpress Reports&lt;/a&gt;, XAF and its&amp;nbsp;&lt;a href="https://documentation.devexpress.com/eXpressAppFramework/113361/Concepts/Security-System"&gt;security module&lt;/a&gt;.&lt;/p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xpo/image(1).png" alt=""&gt;&lt;h2&gt;Visual Studio 2022 Support for the ORM Data Model Designer Coming Soon (in v21.2.4)&lt;/h2&gt;&lt;p&gt;As you may already know from&amp;nbsp;&lt;a href="https://community.devexpress.com/blogs/news/archive/2021/10/14/visual-studio-2022-and-net-6-support.aspx" target="_blank"&gt;our recent&amp;nbsp;announcement&lt;/a&gt;, we will support&amp;nbsp;&lt;a href="https://docs.devexpress.com/XPO/14811/design-time-features/data-model-designer" target="_blank"&gt;XPO&amp;#39;s Data Model Designer&lt;/a&gt;&amp;nbsp;in&amp;nbsp;&lt;span style="font-weight:bold;"&gt;v21.2.4&lt;/span&gt;&amp;nbsp;(we are waiting for stable versions of the Modeling SDK and other tooling - available in&amp;nbsp;the official Visual Studio 2022 release). In the meantime, you can:&lt;/p&gt;&lt;ul&gt;&lt;li&gt; continue to use design-time functionality&amp;nbsp;in Visual Studio 2019;&lt;/li&gt;&lt;li&gt;reuse&amp;nbsp;&lt;a href="https://docs.devexpress.com/CodeRushForRoslyn/118557/coding-assistance/code-templates/xpo-templates" target="_blank"&gt;our prebuilt CodeRush templates&lt;/a&gt;&amp;nbsp;in Visual Studio 2022 to quickly generate your XPO data model in code.&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;.NET 6 Support &lt;/h2&gt;&lt;p&gt;XPO already supports .NET 6 (because XPO assemblies target .NET Standard 2.0). Many users have successfully incorporated XPO in their .NET 6 projects already - please let us know if you encounter any issues in this regard.&lt;/p&gt;&lt;h2&gt;1-Click Solution to Create Secure OData v4 API Services from an XPO Data Model&lt;/h2&gt;&lt;h3&gt;Problem&lt;/h3&gt;&lt;p&gt;As I noted above, XPO includes APIs to generate CRUD or OData v4 services (powered by ASP.NET Core Web API).&amp;nbsp;These services, however, do not include any data protection or authorization functionality by default. Authorization and authentication need to be implemented on their own (just like with any other .NET ORM, including Entity Framework).&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight:bold;"&gt;But let&amp;#39;s be honest&lt;/span&gt;: for most (myself&amp;nbsp;included), creating a robust security&amp;nbsp;system is a serious and&amp;nbsp;costly undertaking. This is especially true if your enterprise requires field-tested Role-Based Access Control (RBAC) and advanced authentication based on&amp;nbsp;JWT +&amp;nbsp;OAuth2 for&amp;nbsp;Azure AD.&amp;nbsp;Yes, too many acronyms&amp;nbsp;and SDK to master, too many `principals`, `access tokens`,&amp;nbsp;and `claims` to remember (brrr…my apologies to&lt;span style="font-weight:bold;"&gt; ASP.NET Core Identity creators and experts, but I personally hate this complexity. If people reading this are the same down-to-earth .NET developers like I am,&amp;nbsp;please add &amp;quot;+1&amp;quot; in the comments section below).&lt;/span&gt;&lt;/p&gt;
&lt;img src="https://community.devexpress.com:443/blogs/xpo/image(2).png" alt=""&gt;
&lt;p&gt;A long-term customer and MVP, Joche Ojeda, explained the complexity problem much better than I can:&lt;/p&gt;
&lt;blockquote&gt;&lt;img style="width:100px;height:100px;float:left;margin-right:35px;" src="https://www.devexpress.com/products/net/application_framework/i/joche-ojeda.png" alt="Joche Ojeda, Business Owner at BitFrameworks"&gt;One of the things I ask my customers is &amp;#39;do you really want to develop a security system from scratch?&amp;#39; Experience tells me that when someone really wants to build a security system from scratch, it is because they have never had to build one before. Fact is that if you have built a security system from scratch, you&amp;#39;ll definitely want to avoid it.&lt;/blockquote&gt;
&lt;h3&gt;Solution&lt;/h3&gt;&lt;p&gt;XAF&amp;#39;s Solution Wizard&amp;nbsp;&lt;span style="font-weight:bold;"&gt;v21.2&lt;/span&gt;&amp;nbsp;includes a &amp;quot;1-Click&amp;quot; solution to create&amp;nbsp;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/403394/backend-web-api-service" target="_blank"&gt;ASP.NET Core Web/HTTP API services&lt;/a&gt;&amp;nbsp;(via OData v4 and Swagger/OpenAPI). This service allows developers to reuse ORM-based&amp;nbsp;application data, logic, and modules (like CRUD, security authorization and authentication) within non-XAF apps. You can use OAuth2, JWT or custom strategies for authentication and tools like Postman or Swagger for API testing.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.devexpress.com/products/net/application_framework/i/xaf-interoperability-api@2x.png" alt=""&gt;&lt;/p&gt;
&lt;h3&gt;How It Works&lt;/h3&gt;&lt;p&gt;To test this&amp;nbsp;&lt;span style="font-weight:bold;"&gt;automatic&lt;/span&gt;&amp;nbsp;API scaffolding, XPO users can:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; Register a free offer at&amp;nbsp;&lt;a href="https://www.devexpress.com/security-api-free" target="_blank" style="background-color:#ffff00;"&gt;https://www.devexpress.com/security-api-free&lt;/a&gt;. When you register for a free DevExpress product, you can use your registered product for as long as your needs dictate. Should an update be made available free-of-charge, you will be notified via email or this website. Updates that are issued free-of-charge can also be used&amp;nbsp;&lt;span style="font-weight:bold;"&gt;indefinitely&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt; &lt;a href="https://www.devexpress.com/Products/Try/" target="_blank"&gt;Download&lt;/a&gt; and run the DevExpress Unified Component Installer to register XAF&amp;#39;s Solution Wizard within Visual Studio 2019 (Visual Studio 2022 support will be available soon - v21.2.4+);&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3.&lt;/strong&gt;&amp;nbsp;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/403401/analytics/backend-web-api-service/create-new-application-with-web-api-service"&gt;Create a new application with the Web API&lt;/a&gt;&amp;nbsp;using XAF&amp;#39;s Solution Wizard, and register your XPO classes for interoperability needs. Run the service and it will display the Swagger UI for API testing automatically. For more information, check out this overview video:&lt;/p&gt;
&lt;iframe width="780" height="439" src="https://www.youtube-nocookie.com/embed/T7y4gwc1n4w" allowfullscreen="" style="width:780px;border:0;" referrerpolicy="strict-origin-when-cross-origin"&gt;Browser not compatible.&lt;/iframe&gt;

&lt;div class="Note"&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: should&amp;nbsp;you prefer to implement secure Web API services with XPO or EF Core 5&amp;nbsp;&lt;strong&gt;manually&lt;/strong&gt;, please check our &lt;a href="https://github.com/DevExpress-Examples/XAF_Security_E4908/tree/21.2.1%2B/XPO/ASP.NetCore" target="_blank"&gt;GitHub examples&lt;/a&gt;.&lt;br&gt;&lt;/div&gt;&lt;p&gt;

&lt;/p&gt;&lt;h3&gt;Future Plans&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Our Web API Service project template (for XPO users) ships as a &lt;strong&gt;preview &lt;/strong&gt;in v21.2. We plan to officially release this functionality for XPO in May, 2022 (v22.1). The next major version (v22.2)&amp;nbsp;should also support EF Core 6 for data access. Finally, we expect to support new .NET 6-related features and optimize assembly dependencies in 2022.&lt;/li&gt;&lt;li&gt;We also want to publish this Web API Service template as VSIX in Visual Studio Marketplace for everyone who registered for &lt;a href="https://www.devexpress.com/security-api-free" target="_blank" style="background-color:#ffff00;"&gt;our free offer&lt;/a&gt;&amp;nbsp;(we will eliminate the need to download and run the DevExpress Unified Component Installer).&amp;nbsp;&lt;/li&gt;&lt;li&gt;We will keep&amp;nbsp;XPO connection providers up to date with the latest database engine versions (Oracle, SQL Server, MySQL, PostreSQL, Firebird, etc.)&amp;nbsp;and extend support based on user feedback. We will also expand XPO connection provider support with &lt;a href="https://en.wikipedia.org/wiki/SAP_HANA" target="_blank"&gt;SAP HANA&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Your Feedback Matters&lt;/h2&gt;&lt;p&gt;Thank you for your continued support and your commitment to XPO. Feel free to post your thoughts/comments below and let us know what you think of XPO and where you’d like to see us take XPO in 2022.&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>https://community.devexpress.com/Blogs/xpo/archive/2020/06/04/xpo-updated-net-core-examples-performance-benchmarks-for-ef-core-5-v20-1.aspx</id>
    <title type="text">XPO - Updated .NET Core Examples, Performance Benchmarks for EF Core 5.0 and More (v20.1)</title>
    <published>2020-06-04T08:30:00Z</published>
    <updated>2026-06-09T00:53:03Z</updated>
    <author>
      <name>Dennis Garavsky (DevExpress)</name>
    </author>
    <link rel="alternate" href="https://community.devexpress.com/Blogs/xpo/archive/2020/06/04/xpo-updated-net-core-examples-performance-benchmarks-for-ef-core-5-v20-1.aspx" />
    <category term=".NET Core" scheme="https://community.devexpress.com/Tags/.NET+Core" />
    <category term=".net standard 2.0" scheme="https://community.devexpress.com/Tags/.net+standard+2.0" />
    <category term="comparison" scheme="https://community.devexpress.com/Tags/comparison" />
    <category term="EF" scheme="https://community.devexpress.com/Tags/EF" />
    <category term="Entity Framework" scheme="https://community.devexpress.com/Tags/Entity+Framework" />
    <category term="examples" scheme="https://community.devexpress.com/Tags/examples" />
    <category term="orm" scheme="https://community.devexpress.com/Tags/orm" />
    <category term="performance" scheme="https://community.devexpress.com/Tags/performance" />
    <category term="speed" scheme="https://community.devexpress.com/Tags/speed" />
    <category term="tips &amp; tricks" scheme="https://community.devexpress.com/Tags/tips+%26+tricks" />
    <category term="XPO" scheme="https://community.devexpress.com/Tags/XPO" />
    <content type="html">&lt;h2&gt;Performance Benchmarks&lt;/h2&gt;&lt;p&gt;The release of &lt;a href="https://www.devexpress.com/products/net/orm/" target="_blank"&gt;XPO&lt;/a&gt; v20.1&amp;nbsp;gave us an&amp;nbsp;opportunity to update our benchmarks for XPO and Entity Framework Core: &lt;a href="https://github.com/DevExpress/XPO/tree/master/Benchmarks"&gt;https://github.com/DevExpress/XPO/tree/master/Benchmarks&lt;/a&gt;. We were primarily interested in EF Core 3.1.3 vs EF Core&amp;nbsp;5.0, but we&amp;nbsp;did not notice much difference&amp;nbsp;in our tests (&lt;a href="https://community.devexpress.com/blogs/xpo/2020/EFCore_30_vs_50.pdf" target="_blank"&gt;PDF&lt;/a&gt;). As for XPO vs EF Core 3.1.3, results are very &lt;a href="https://community.devexpress.com/blogs/xpo/archive/2019/10/30/xpo-updated-performance-benchmarks-for-net-core-3-0-v19-2.aspx" target="_blank"&gt;similar to v19.2&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;As always, we welcome your feedback. If you had the opportunity to execute our benchmark tests, please share your thoughts below. We’d love to know whether our findings are in-line with yours.&lt;/p&gt;&lt;h2&gt;Updated .NET Core Examples&lt;/h2&gt;&lt;p&gt;We identified 30 of our most popular &lt;a href="https://supportcenter.devexpress.com/ticket/list/?preset=a9ca787a-0769-4738-9c9f-e7e1bdf47fdd" target="_blank"&gt;XPO examples&lt;/a&gt; and added .NET Core 3.1 projects to them. I hope you find this update useful as .NET Core gains in popularity. To learn XPO faster, feel free to explore the following technical resources:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://github.com/DevExpress/XPO/tree/master/Tutorials" target="_blank"&gt;CRUD tutorials&lt;/a&gt;&amp;nbsp;for various .NET UI platforms&lt;/li&gt;&lt;li&gt;&lt;a href="https://docs.devexpress.com/XPO/2002/examples" target="_blank"&gt;Examples&lt;/a&gt;&amp;nbsp;and concepts in the documentation&lt;/li&gt;&lt;li&gt;&lt;a href="https://supportcenter.devexpress.com/ticket/list/?preset=805eb54b-6001-4a60-81ff-f2fe1cdf3456" target="_blank"&gt;KB articles&lt;/a&gt;&amp;nbsp;in the support center&lt;a href="https://supportcenter.devexpress.com/ticket/list/?preset=a9ca787a-0769-4738-9c9f-e7e1bdf47fdd" target="_blank"&gt;&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;We have also updated XPO and EF Core examples with XAF&amp;#39;s user authentication and group authorization API to &lt;strong&gt;v20.1.4&lt;/strong&gt; (&lt;a href="https://www.devexpress.com/go/XAF_Security_NonXAF_Series.aspx" target="_blank"&gt;GitHub&lt;/a&gt;). Hopefully, you will find these access control/security functions of value for your enterprise. To quickly familiarize yourself with XAF&amp;#39;s security system, please review these&amp;nbsp;&lt;a href="https://supportcenter.devexpress.com/ticket/details/t886740/faq-xaf-user-authentication-and-group-authorization-api-for-devexpress-xpo-and-microsoft" target="_blank"&gt;Frequently Asked Questions&lt;/a&gt;.&lt;/p&gt;&lt;h2&gt;Noteworthy Support Center Tickets&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Changes in Visual Studio 2019 v16.6.0 caused the&amp;nbsp;standard Class.cs&amp;nbsp;item template (with an empty class) to disappear in the Add | New Item dialog. As a fix, you can update to the latest version or disable the XPO extension&amp;nbsp;(&lt;a href="https://supportcenter.devexpress.com/ticket/details/t892485/visual-studio-2019-the-class-cs-item-is-missing-in-the-visual-studio-add-new-item-designer" target="_blank"&gt;T892485&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;We softened default parameter validation with regard to SELECT, UPDATE, and INSERT statements in XPO&amp;nbsp;v20.1.4 (&lt;a href="https://supportcenter.devexpress.com/ticket/details/t890958/xpo-too-strict-default-query-parameter-validation-in-v20-1-3" target="_blank"&gt;T890958&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;We demonstrated how to unit test custom logic in XAF/XPO business classes with InMemoryDataStore (&lt;a href="https://supportcenter.devexpress.com/ticket/details/t884471/how-to-unit-test-custom-logic-in-xaf-xpo-business-classes" target="_blank"&gt;T884471&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;Check how to use XPO Dependency Injection&amp;nbsp;extensions to setup&amp;nbsp;multiple data layers for ASP.NET Core Web API services (&lt;a href="https://supportcenter.devexpress.com/ticket/details/t864202/how-to-modify-net-core-web-api-for-multiple-datalayer" target="_blank"&gt;T864202&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;Learn how to&amp;nbsp;troubleshoot the &amp;quot;Reentrancy or cross thread operation detected&amp;quot; errors (&lt;a href="https://supportcenter.devexpress.com/ticket/details/t419520/how-to-troubleshoot-the-reentrancy-or-cross-thread-operation-detected-error" target="_blank"&gt;T419520&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;We implemented a console version of &lt;a href="https://docs.devexpress.com/XpoProfiler/10646/xpo-profiler"&gt;XPO Profiler&lt;/a&gt;&amp;nbsp;to detect performance bottlenecks and code issues (&lt;a href="https://supportcenter.devexpress.com/ticket/details/t882761/how-to-create-a-console-xpo-profiler-to-detect-performance-bottlenecks-and-code-issues" target="_blank"&gt;T882761&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;FileNotFoundException and TypeLoadException related to Microsoft.Data.SqlClient may occur in debug mode (&lt;a href="https://supportcenter.devexpress.com/ticket/details/t885153/mssqlconnectionprovider-creates-idbconnection-and-idbcommand-objects-via-reflection" target="_blank"&gt;T885153&lt;/a&gt;).&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry>
    <id>https://community.devexpress.com/Blogs/xpo/archive/2020/05/21/xpo-important-changes-to-default-query-parameter-validation-in-v20-1.aspx</id>
    <title type="text">XPO - Important Changes to Default Query Parameter Validation (v20.1)</title>
    <published>2020-05-21T04:38:00Z</published>
    <updated>2026-06-09T00:53:03Z</updated>
    <author>
      <name>Dennis Garavsky (DevExpress)</name>
    </author>
    <link rel="alternate" href="https://community.devexpress.com/Blogs/xpo/archive/2020/05/21/xpo-important-changes-to-default-query-parameter-validation-in-v20-1.aspx" />
    <category term="feedback" scheme="https://community.devexpress.com/Tags/feedback" />
    <category term="v20.1" scheme="https://community.devexpress.com/Tags/v20.1" />
    <category term="validation" scheme="https://community.devexpress.com/Tags/validation" />
    <category term="XPO" scheme="https://community.devexpress.com/Tags/XPO" />
    <content type="html">&lt;h2&gt;Problem&lt;/h2&gt;
&lt;p&gt;We recently documented the following changes in &lt;strong&gt;v20.1.3&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://supportcenter.devexpress.com/ticket/details/T870008"&gt;XPO may throw OverflowException if String or Byte Array value length (size) is greater than the maximum allowed database column size&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://supportcenter.devexpress.com/ticket/details/T889138"&gt;XPO may throw InvalidCastException or SqlExecutionErrorException if parameter types (for update/read queries) do not match database column types&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Unfortunately, we failed to anticipate the scope of query parameter inconsistencies within customer apps (&lt;a href="https://community.devexpress.com/blogs/xpo/archive/2020/03/06/express-persistent-objects-early-access-preview-v20-1.aspx"&gt;EAP/Beta&lt;/a&gt;&amp;nbsp;feedback did not uncover this issue). Despite benefits associated with our changes, we do not want to force XPO users to modify their code immediately or revert to previous behavior manually (with feature toggles).&lt;/p&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;p&gt;We softened default parameter validation with regard to SELECT, UPDATE, and INSERT statements in our &lt;strong&gt;v20.1.4&lt;/strong&gt; release.&lt;br&gt;We introduced a new&amp;nbsp;&lt;em&gt;DevExpress.Xpo.DB.QueryParameterMode&lt;/em&gt;&amp;nbsp;enumeration with the following values:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Legacy: for v19.2 and older versions.&lt;/li&gt;
&lt;li&gt;SetType (Default): will only validate parameter type without size. Will preserve all performance optimizations. SetType will still catch errors such as Guid parameter comparisons with strings (&lt;a href="https://supportcenter.devexpress.com/ticket/details/T889138"&gt;learn more&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;SetTypeAndSize: will validate type and size. It will be automatically set for MSSqlConnectionProvider and &lt;a href="https://docs.devexpress.com/XPO/401704/feature-center/querying-a-data-store/always-encrypted" target="_blank"&gt;Always Encrypted&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can set the&amp;nbsp;&lt;em&gt;ConnectionProviderSql.QueryParameterMode&lt;/em&gt;&amp;nbsp;property or the&amp;nbsp;&lt;em&gt;ConnectionProviderSql.GlobalQueryParameterMode&lt;/em&gt;&amp;nbsp;static property as needed. Example:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;&lt;code class="language-csharp"&gt;using DevExpress.Xpo.DB;
//...
ConnectionProviderSql.GlobalQueryParameterMode = QueryParameterMode.Legacy;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The majority of &lt;a href="https://www.devexpress.com/products/net/orm/" target="_blank"&gt;XPO&lt;/a&gt; users will not need to modify this behavior, because new defaults should address most requirements.&lt;/p&gt;
&lt;h2&gt;Feedback &lt;/h2&gt;
&lt;p&gt;Please &lt;a href="http://downloads.devexpress.com/HotFixes/DXP/v20.1" target="_blank"&gt;test a new build&lt;/a&gt; and let us know how this solution works for you.&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>https://community.devexpress.com/Blogs/xpo/archive/2020/04/20/xpo-automate-database-schema-migrations-using-the-orm-data-model-designer-or-apis-ctp.aspx</id>
    <title type="text">XPO - Automate Database Schema Migration using the ORM Data Model Designer or APIs</title>
    <published>2020-04-20T06:38:00Z</published>
    <updated>2026-06-09T00:53:03Z</updated>
    <author>
      <name>The DevExpress Team</name>
    </author>
    <link rel="alternate" href="https://community.devexpress.com/Blogs/xpo/archive/2020/04/20/xpo-automate-database-schema-migrations-using-the-orm-data-model-designer-or-apis-ctp.aspx" />
    <category term="CTP" scheme="https://community.devexpress.com/Tags/CTP" />
    <category term="database" scheme="https://community.devexpress.com/Tags/database" />
    <category term="early testing" scheme="https://community.devexpress.com/Tags/early+testing" />
    <category term="feedback" scheme="https://community.devexpress.com/Tags/feedback" />
    <category term="schema migrations" scheme="https://community.devexpress.com/Tags/schema+migrations" />
    <category term="v20.1" scheme="https://community.devexpress.com/Tags/v20.1" />
    <category term="XPO" scheme="https://community.devexpress.com/Tags/XPO" />
    <content type="html">&lt;div&gt;&lt;span&gt;We’ve  got some good news for the majority of &lt;a href="https://www.devexpress.com/products/net/orm/" target="_blank"&gt;XPO&lt;/a&gt; and &lt;a href="https://www.devexpress.com/products/net/application_framework/" target="_blank" title="Application Framework for .NET"&gt;XAF&lt;/a&gt; users! With v20.1,  you can incrementally update your database schema once changes are made to an XPO data model.  You can generate diffs (the SQL script) between the latest data model  and the existing database schema in the ORM Data Model Designer or in  code.  As  always, we welcome your feedback.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;h2&gt;How it Works&lt;/h2&gt;&lt;p&gt;In the &lt;a href="https://docs.devexpress.com/XPO/14811/design-time-features/data-model-designer?v=20.1" target="_blank"&gt;Data Model Designer&lt;/a&gt;, right-click the design surface and select the &lt;b&gt;Generate Migration Script&lt;/b&gt; menu item. The designer will add a new file with SQL commands and open it in Visual Studio.&lt;br&gt;&lt;/p&gt;&lt;img src="https://community.devexpress.com/blogs/xpo/Clipboard-File-1.png" alt="" style="width:1441px;height:1253px;"&gt;&lt;p&gt;If you create XPO classes manually, the following example  demonstrates how to generate a schema migration script and update your  database programmatically: &lt;a href="https://github.com/DevExpress-Examples/XPO_how-to-generate-sql-script-for-schema-migration" target="_blank" style="background-color:#ffff99;"&gt;How to Use the Database Schema Migrations API&lt;/a&gt;.&lt;/p&gt;&lt;h2&gt;Supported Databases and Limitations&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;At present, the following &lt;a href="https://docs.devexpress.com/XPO/2114/fundamentals/database-systems-supported-by-xpo" target="_blank"&gt;data store providers&lt;/a&gt; support this feature: MSSqlConnectionProvider,  MySqlConnectionProvider, OracleConnectionProvider,  ODPConnectionProvider, ODPManagedConnectionProvider,  PostgreSqlConnectionProvider.&lt;br&gt;&lt;/li&gt;&lt;li&gt; The Database Schema Migration API may change prior to official release. Interfaces and method names are subject to change in the final release.&lt;/li&gt;&lt;li&gt;The Data Model Designer cannot generate a schema migration script if your Data Model contains classes imported from external assemblies. For instance, in XAF applications, the&amp;nbsp;&lt;b&gt;Base Class&lt;/b&gt; property can reference&amp;nbsp;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/112571/concepts/business-model-design/built-in-business-classes-for-most-popular-scenarios" target="_blank"&gt;built-in business classes&lt;/a&gt; shipped with eXpressApp Framework (XAF). This scenario is not  supported in our CTP version. You can still use API methods to generate a  migration script in XAF apps.&lt;br&gt;&lt;/li&gt;&lt;li&gt;The Data Model Designer does not allow you to specify custom schema migration options.&amp;nbsp;&lt;/li&gt;&lt;li&gt;If you rename a class or property, the schema migration script will delete the corresponding table or column and create a new one.&amp;nbsp;&lt;/li&gt;&lt;li&gt;The Data Model Designer cannot generate a database update script if the Data Model contains classes mapped to database views.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry>
    <id>https://community.devexpress.com/Blogs/xpo/archive/2020/03/06/express-persistent-objects-early-access-preview-v20-1.aspx</id>
    <title type="text">eXpress Persistent Objects - Early Access Preview (v20.1)</title>
    <published>2020-03-06T01:08:00Z</published>
    <updated>2026-06-09T00:53:03Z</updated>
    <author>
      <name>The DevExpress Team</name>
    </author>
    <link rel="alternate" href="https://community.devexpress.com/Blogs/xpo/archive/2020/03/06/express-persistent-objects-early-access-preview-v20-1.aspx" />
    <category term="2020" scheme="https://community.devexpress.com/Tags/2020" />
    <category term="database" scheme="https://community.devexpress.com/Tags/database" />
    <category term="prerelease" scheme="https://community.devexpress.com/Tags/prerelease" />
    <category term="sqlserver" scheme="https://community.devexpress.com/Tags/sqlserver" />
    <category term="v20.1" scheme="https://community.devexpress.com/Tags/v20.1" />
    <category term="what's new" scheme="https://community.devexpress.com/Tags/what%27s+new" />
    <category term="XPO" scheme="https://community.devexpress.com/Tags/XPO" />
    <content type="html">&lt;p&gt;&lt;span&gt;The goal of this blog post is to share our newest XPO-specific features and give you the opportunity to test new functionality before we wrap up our current dev cycle.&amp;nbsp;&lt;/span&gt;XPO&amp;nbsp;is available&amp;nbsp;&lt;a href="https://community.devexpress.com/blogs/xpo/archive/2018/05/21/xpo-free-of-charge-in-v18-1.aspx" target="_blank" style="color:#996bb4;"&gt;free-of-charge&lt;/a&gt;.&amp;nbsp;If you own an active&amp;nbsp;&lt;a href="https://www.devexpress.com/buy/net/" style="color:#996bb4;"&gt;Universal or DXperience&lt;/a&gt;&amp;nbsp;subscription, you can download the preview build from the DevExpress&amp;nbsp;&lt;a href="https://www.devexpress.com/ClientCenter/DownloadManager/" style="color:#996bb4;"&gt;Download Manager&lt;/a&gt;&amp;nbsp;and test the features described in this blog post. Once you do, please take a moment tell us whether these new features address your business needs. This will help us fine-tune our code before official launch.&lt;/p&gt;&lt;div&gt;&lt;div class="Note"&gt;&lt;div&gt;Early Access and CTP builds are provided solely for early testing purposes and are not ready for production use. This build can be installed side by side with other major versions of DevExpress products. Please backup your project and other important data before installing Early Access and CTP builds.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;This EAP may not include all features/products we expect to ship in our v20.1 release cycle. As its name implies, the EAP offers an early preview of what we expect to ship in two months.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;h2&gt;Protect Sensitive Data - Using SQL Server and Always Encrypted&amp;nbsp;&lt;/h2&gt;&lt;p&gt;&lt;a href="https://www.devexpress.com/products/net/orm/" target="_blank"&gt;XPO v20.1&lt;/a&gt; supports Always Encrypted for SQL Server 2016+. You can now read, update, sort and filter encrypted column data (the last two operations depend on encryption mode). &amp;nbsp;&lt;/p&gt;&lt;p&gt;If you are not yet familiar with this SQL Server feature, let me quote the official documentation:&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;Always Encrypted is a feature designed to protect sensitive data, such as credit card numbers or national identification numbers (for example, U.S. social security numbers), stored in Azure SQL Database or SQL Server databases. Always Encrypted allows clients to encrypt sensitive data inside client applications and never reveal the encryption keys to the Database Engine (SQL Database or SQL Server).&lt;/blockquote&gt;
&lt;div&gt;For more information, refer to &lt;a href="https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/always-encrypted-database-engine?view=sql-server-ver15" target="_blank"&gt;Always Encrypted&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://docs.microsoft.com/en-us/sql/connect/ado-net/sql/sqlclient-support-always-encrypted?view=sql-server-ver15" target="_blank"&gt;Using Always Encrypted with the Microsoft .NET Data Provider for SQL Server&lt;/a&gt;.&lt;br&gt;&lt;img src="https://community.devexpress.com:443/blogs/xpo/2020/alwaysencrypted4.png" alt=""&gt;&lt;/div&gt;
If you are new to Always Encrypted, you may also want to watch a 15-min &lt;a href="https://youtu.be/vXlvkx4udIE" target="_blank"&gt;feature overview&lt;/a&gt; from Jose Ojeda, a DevExpress MVP:
&lt;iframe width="780" height="439" src="https://www.youtube-nocookie.com/embed/vXlvkx4udIE" allowfullscreen="" style="width:780px;border:0;" referrerpolicy="strict-origin-when-cross-origin"&gt;Browser not compatible.&lt;/iframe&gt;

&lt;h2&gt;Please Help Us Test Major Changes to the XPO Core against All DB Providers&amp;nbsp;&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;&lt;div&gt;Previous versions of XPO could only use encrypted tables in read-only mode (because SQL Server imposed special requirements on SQL update statements). To address these requirements, we significantly reworked the core SQL generator module. While we avoided breaking changes for other database providers and our tests passed, we urge XPO users to thoroughly test the Early Access Preview within their projects and research these breaking changes:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://supportcenter.devexpress.com/ticket/details/t870008/xpo-data-store-adapters-throw-overflowexception-if-string-or-byte-value-length-size-is" target="_blank"&gt;XPO may throw OverflowException if String or Byte Array value length (size) is greater than the maximum allowed database column size&lt;/a&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://supportcenter.devexpress.com/ticket/details/t889138" target="_blank"&gt;XPO may throw InvalidCastException or SqlExecutionErrorException if parameter types (for update/read queries) do not match database column types&lt;/a&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://supportcenter.devexpress.com/ticket/details/t885153/mssqlconnectionprovider-creates-idbconnection-and-idbcommand-objects-via-reflection" target="_blank"&gt;MSSqlConnectionProvider creates IDbConnection and IDbCommand objects via Reflection&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span&gt;&lt;span&gt;If you happen to encounter other breaking changes or unique scenarios,&amp;nbsp;please contact us in the&amp;nbsp;&lt;/span&gt;&lt;a href="http://support.devexpress.com" target="_blank" rel="noreferrer nofollow" style="color:#996bb4;"&gt;Support Center&lt;/a&gt;&lt;span&gt;. Thank you in advance.&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;The DevExpress.Xpo&amp;nbsp;library&amp;nbsp;for .NET Core 3 (WinForms &amp;amp; WPF) has&amp;nbsp;been removed or replaced with the corresponding .NET Standard version. For more information, please refer to the following article:&amp;nbsp;&lt;/span&gt;&lt;a href="https://supportcenter.devexpress.com/ticket/details/t867894/the-devexpress-data-devexpress-xpo-and-other-cross-platform-assemblies-for-net-core-3" target="_blank" style="color:#996bb4;"&gt;The DevExpress.Data and other cross-platform assemblies for .NET Core 3 (WinForms &amp;amp; WPF), .NET Standard, and.NET Framework apps have been split or removed&lt;/a&gt;&lt;span&gt;.&amp;nbsp;While these changes will not affect the majority of XPO&amp;nbsp;users, they help simplify common development tasks like&amp;nbsp;&lt;/span&gt;&lt;a href="https://community.devexpress.com/blogs/xpo/archive/2019/11/08/xpo-how-to-share-class-libraries-with-the-devexpress-data-or-xpo-dependencies-for-different-target-frameworks.aspx" style="color:#2d81c4;"&gt;How to Share Class Libraries with the DevExpress Data or XPO Dependencies for Different Target Frameworks&lt;/a&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2&gt;XPO Officially Supports Microsoft.Data.SqlClient&lt;/h2&gt;
&lt;p&gt;Microsoft recommends the new&amp;nbsp;&lt;a href="https://techcommunity.microsoft.com/t5/SQL-Server/Released-General-Availability-of-Microsoft-Data-SqlClient-1-0/ba-p/825859" target="_blank"&gt;Microsoft.Data.SqlClient&lt;/a&gt;&amp;nbsp;driver instead of System.Data.SqlClient for new .NET Framework and .NET Core projects. Going forward, Microsoft will also only support new SQL Server features&amp;nbsp;in Microsoft.Data.SqlClient.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;We tested XPO with this new driver, updated the&amp;nbsp;&lt;a href="https://docs.devexpress.com/XPO/2114/fundamentals/database-systems-supported-by-xpo?v=20.1" target="_blank"&gt;Database Systems Supported by XPO&lt;/a&gt;&amp;nbsp;article and some public APIs. For&amp;nbsp;instance, the&amp;nbsp;&lt;a href="https://docs.devexpress.com/XPO/DevExpress.Xpo.DB.Helpers.MSSql2005SqlDependencyCacheRoot.CreateSqlDependencyCacheRoot.overloads?v=20.1" target="_blank"&gt;CreateSqlDependencyCacheRoot&lt;/a&gt;&amp;nbsp;methods now accept an IDbConnection object as a parameter.&lt;/p&gt;&lt;h2&gt;Coming Soon: Database Schema Migrations&lt;/h2&gt;&lt;p&gt;&lt;span&gt;Our final v20.1 release (in 1-2 months) will also allow&amp;nbsp;users to incrementally update database schema and preserve existing data after changes are made to XPO’s data model (&lt;/span&gt;&lt;a href="https://www.devexpress.com/Support/Center/Question/Details/AS4684/can-xpo-automatically-modify-existing-database-schemas-e-g-after-a-persistent-property"&gt;AS4684&lt;/a&gt;&lt;span&gt;).&amp;nbsp;&lt;span&gt;Our goal is to make this process better than that found in&amp;nbsp;&lt;/span&gt;&lt;a href="https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/"&gt;EF Core Migrations&lt;/a&gt;&lt;span&gt;. For starters, we will &lt;span&gt;generate diffs between the latest data model and existing database schema so that you can apply the SQL script manually. For&amp;nbsp;v20.2, we are considering to&amp;nbsp;update schema automatically via a special command in the ORM Data Model Designer or some CLI. If you have any&amp;nbsp;&lt;/span&gt;questions or suggestions about implementation, feel free to email us at &lt;a href="mailto:xpoteam@devexpress.com?subject=Database%20Schema%20Migrations" target="_blank"&gt;XpoTeam@devexpress.com&lt;/a&gt; - we will be happy to follow up.&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;/p&gt;&lt;div class="Note"&gt;&lt;p&gt;Early Access and CTP builds are provided solely for early testing purposes and are not ready for production use. This build can be installed side by side with other major versions of DevExpress products. Please backup your project and other important data before installing Early Access and CTP builds.&amp;nbsp;&lt;/p&gt;&lt;p&gt;This EAP may not include all features/products we expect to ship in our v20.1 release cycle. As its name implies, the EAP offers an early preview of what we expect to ship in two months.&lt;/p&gt;&lt;/div&gt;</content>
  </entry>
  <entry>
    <id>https://community.devexpress.com/Blogs/xpo/archive/2020/01/22/express-persistent-objects-2020-roadmap-your-opinion-counts.aspx</id>
    <title type="text">eXpress Persistent Objects - 2020 Roadmap</title>
    <published>2020-01-22T05:54:00Z</published>
    <updated>2026-06-09T00:53:03Z</updated>
    <author>
      <name>Dennis Garavsky (DevExpress)</name>
    </author>
    <link rel="alternate" href="https://community.devexpress.com/Blogs/xpo/archive/2020/01/22/express-persistent-objects-2020-roadmap-your-opinion-counts.aspx" />
    <category term="2020" scheme="https://community.devexpress.com/Tags/2020" />
    <category term="roadmap" scheme="https://community.devexpress.com/Tags/roadmap" />
    <category term="v20.1" scheme="https://community.devexpress.com/Tags/v20.1" />
    <category term="v20.2" scheme="https://community.devexpress.com/Tags/v20.2" />
    <category term="XPO" scheme="https://community.devexpress.com/Tags/XPO" />
    <content type="html">&lt;p&gt;To help us deliver the best possible features for the &lt;a href="https://www.devexpress.com/products/net/orm/" style="color:#996bb4;"&gt;eXpress Persistent Objects (XPO) ORM&lt;/a&gt;&lt;span&gt;&amp;nbsp;library in 2020, please take a moment to review the list below and share your opinions with us.&lt;/span&gt;&lt;/p&gt;&lt;h2&gt;Housekeeping &amp;amp; .NET Core&lt;/h2&gt;&lt;p&gt;There are a number of housekeeping tasks that need to be completed during each release cycle. The following list summarizes our plans for 2020.&amp;nbsp;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Keep XPO&amp;nbsp;&lt;a href="https://documentation.devexpress.com/XPO/2114/Fundamentals/Database-Systems-Supported-by-XPO"&gt;connection providers&lt;/a&gt;&amp;nbsp;up to date with the latest database engines&amp;nbsp;and extend support based on user feedback. We will also expand &lt;a href="https://docs.devexpress.com/XPO/2114/fundamentals/database-systems-supported-by-xpo?p=netstandard" target="_blank"&gt;.NET Core connection provider&lt;/a&gt;&amp;nbsp;support when more RDBMS vendors join the fray (for instance, we already supported&amp;nbsp;&lt;a href="https://community.devexpress.com/blogs/xpo/archive/2019/11/01/xpo-vistadb-6-postgresql-12-support-and-more-is-coming-v19-2.aspx" target="_blank" style="color:#996bb4;"&gt;Microsoft.Data.SqlClient&lt;/a&gt;&amp;nbsp;in &lt;strong&gt;v20.1&lt;/strong&gt;).&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Introduce more demos and extend learning materials for the main platforms wherein XPO is used (see&amp;nbsp;&lt;a href="https://github.com/DevExpress/XPO/tree/master/Tutorials"&gt;https://github.com/DevExpress/XPO/tree/master/Tutorials&lt;/a&gt;&amp;nbsp;for more information). Note: we will soon demonstrate&amp;nbsp;CRUD XPO operations&amp;nbsp;with the&amp;nbsp;DevExpress WinForms MVVM library.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Support Visual Studio vNext,&amp;nbsp;.NET 5&amp;nbsp;and C# 8.0 features&amp;nbsp;like&amp;nbsp;&lt;/span&gt;&lt;a href="https://devblogs.microsoft.com/dotnet/embracing-nullable-reference-types/" target="_blank" style="color:#996bb4;"&gt;Nullable Reference Types&lt;/a&gt;&lt;span&gt;&amp;nbsp;(features that&amp;nbsp;will affect every .NET developer in 2020).&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Implement Web API-based replacements for DataStoreClient and related classes from&amp;nbsp;&lt;a href="https://docs.devexpress.com/XPO/10018/feature-center/connecting-to-a-data-store/transferring-data-via-wcf-services?p=netstandard" target="_blank"&gt;Transferring Data via WCF Services&lt;/a&gt;&amp;nbsp;- all to be used in .NET Core/.NET Standard apps.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;SQL Server&amp;nbsp;&amp;quot;Always Encrypted&amp;quot; &lt;/h2&gt;&lt;p&gt;We hope to refactor our core to introduce typed query parameters (for instance, null parameters with type information or additional information such as ping). This will help us support&amp;nbsp;&lt;a href="https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/always-encrypted-database-engine?view=sql-server-ver15" target="_blank"&gt;Always Encrypted&lt;/a&gt;&amp;nbsp;- a very important feature for enterprise customers. Batch updates and operations on slow connections will also benefit from this refactoring.&amp;nbsp;&lt;span&gt;Expect a Beta in &lt;strong&gt;v20.1&lt;/strong&gt; and a final release in &lt;strong&gt;v20.2&lt;/strong&gt;.&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;h2&gt;Database Schema Migrations&lt;/h2&gt;&lt;p&gt;We want a simpler process to incrementally update database schema and preserve existing data after changes are made to XPO’s data model (&lt;a href="https://www.devexpress.com/Support/Center/Question/Details/AS4684/can-xpo-automatically-modify-existing-database-schemas-e-g-after-a-persistent-property"&gt;AS4684&lt;/a&gt;). At present, we handle initial database creation and schema tuning along with basic data model changes only (create tables and columns for new classes and properties). For more complex sync tasks, developers need to create database scripts or specialized helper methods. For instance, XAF&amp;#39;s&amp;nbsp;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/DevExpress.ExpressApp.Updating.ModuleUpdater"&gt;ModuleUpdater&lt;/a&gt;&amp;nbsp;ships with the DropColumn, RenameTable, DropConstraint and other APIs for Microsoft SQL Server for this purpose. Our goal is to make this process better than that found in  &lt;a href="https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/"&gt;EF Core Migrations&lt;/a&gt;.&amp;nbsp;Expect a Beta in &lt;strong&gt;v20.1&lt;/strong&gt; and a final release in &lt;strong&gt;v20.2&lt;/strong&gt;.&amp;nbsp;&lt;/p&gt;&lt;h2&gt;Your Opinion Counts&lt;/h2&gt;&lt;p&gt;&lt;span&gt;As always, we look forward to your comments and questions. Please share your thoughts below or email&amp;nbsp;&lt;/span&gt;&lt;a href="mailto:xpoteam@devexpress.com"&gt;xpoteam@devexpress.com&lt;/a&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div class="Note"&gt;The information contained within this blog post details our current/projected development plans. Please note that this information is being shared for INFORMATIONAL PURPOSES ONLY and does not represent a binding commitment on the part of Developer Express Inc. This roadmap and the features/products listed within it are subject to change. You should not rely on or use this information to help make a purchase decision about Developer Express Inc products.&lt;/div&gt;</content>
  </entry>
  <entry>
    <id>https://community.devexpress.com/Blogs/xpo/archive/2019/11/07/xpo-how-to-share-class-libraries-with-the-devexpress-data-or-xpo-dependencies-for-different-target-frameworks.aspx</id>
    <title type="text">XPO - How to Share Class Libraries with the DevExpress Data or XPO Dependencies for Different Target Frameworks</title>
    <published>2019-11-07T17:05:00Z</published>
    <updated>2026-06-09T00:53:03Z</updated>
    <author>
      <name>Dennis Garavsky (DevExpress)</name>
    </author>
    <link rel="alternate" href="https://community.devexpress.com/Blogs/xpo/archive/2019/11/07/xpo-how-to-share-class-libraries-with-the-devexpress-data-or-xpo-dependencies-for-different-target-frameworks.aspx" />
    <category term=".NET Core" scheme="https://community.devexpress.com/Tags/.NET+Core" />
    <category term="ASP.NET" scheme="https://community.devexpress.com/Tags/ASP.NET" />
    <category term="NuGet" scheme="https://community.devexpress.com/Tags/NuGet" />
    <category term="usability" scheme="https://community.devexpress.com/Tags/usability" />
    <category term="WinForms" scheme="https://community.devexpress.com/Tags/WinForms" />
    <category term="WPF" scheme="https://community.devexpress.com/Tags/WPF" />
    <category term="XAF" scheme="https://community.devexpress.com/Tags/XAF" />
    <category term="XPO" scheme="https://community.devexpress.com/Tags/XPO" />
    <content type="html">&lt;p&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;UPDATED on March 13th 2020:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The former core&amp;nbsp;&lt;em&gt;DevExpress.Data&lt;/em&gt;&amp;nbsp;and&amp;nbsp;&lt;em&gt;DevExpress.Xpo&lt;/em&gt;&amp;nbsp;assemblies for .NET Core 3 (WinForms &amp;amp; WPF) and .NET Framework apps have been changed in v20.1. Their functionality now resides in the following assemblies:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;DevExpress.Data and DevExpress.Xpo for .NET Standard;&lt;/li&gt;&lt;li&gt;DevExpress.Data and DevExpress.Xpo for .NET Framework;&lt;/li&gt;&lt;li&gt;DevExpress.Data.Desktop for .NET Core 3 (WinForms &amp;amp; WPF);&lt;/li&gt;&lt;li&gt;DevExpress.Data.Desktop for .NET Framework.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;These changes are done for easier maintenance,&amp;nbsp;clearer dependencies,&amp;nbsp;and&amp;nbsp;future code extension of .NET Core apps and the corresponding NuGet packages. This also helps greatly simplify common development tasks like&amp;nbsp;sharing Class Libraries with the DevExpress.Data or DevExpress.Xpo dependencies for different Target Frameworks. For more information, see&amp;nbsp;&lt;a href="https://supportcenter.devexpress.com/ticket/details/T867894" style="color:#2d81c4;"&gt;The DevExpress.Data, DevExpress.Xpo, and other cross-platform assemblies for .NET Core 3 (WinForms &amp;amp; WPF), .NET Standard, and.NET Framework apps have been split or removed&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;---------------------------------------&lt;/p&gt;&lt;p&gt;Early .NET Core 3.0 adopters (those targeting WinForms and WPF) might recall that sharing common libraries with the DevExpress.Data or DevExpress.Xpo assemblies is more difficult for the&amp;nbsp;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;em&gt;netcoreapp3.0&lt;/em&gt;&lt;span&gt;&amp;quot; and&amp;nbsp;&lt;/span&gt;&lt;em&gt;&amp;quot;netstandard2.0&amp;quot;&lt;/em&gt;&amp;nbsp;projects.&lt;/p&gt;&lt;p&gt;The good news is that we found a simpler solution - &lt;a href="https://docs.microsoft.com/en-us/dotnet/standard/library-guidance/cross-platform-targeting" target="_blank" style="color:#996bb4;"&gt;Cross-platform targeting or Multi-Targeting&lt;/a&gt;. This approach will help you avoid two CSPROJ files for  different Target Frameworks - less code duplication and maintenance costs for your solution. To make it work, the CSPOJ file defines TargetFrameworks element and required dependencies for each target conditions.&amp;nbsp;&lt;span&gt;You can download a working sample from&amp;nbsp;&lt;/span&gt;&lt;a href="https://supportcenter.devexpress.com/ticket/details/t808990/netcore3-0-application-and-netstandard2-0-modules" target="_blank" style="color:#996bb4;background-color:#ffff99;"&gt;this Support Center ticket&lt;/a&gt;&lt;span&gt;&amp;nbsp;(T808990).&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class="brush: xml"&gt;&amp;lt;Project Sdk=&amp;quot;Microsoft.NET.Sdk&amp;quot;&amp;gt;
  &amp;lt;PropertyGroup&amp;gt;
    &amp;lt;TargetFrameworks&amp;gt;netstandard2.0;netcoreapp3.0&amp;lt;/TargetFrameworks&amp;gt;
    &amp;lt;Description&amp;gt;Sample project that targets multiple TFMs&amp;lt;/Description&amp;gt;
  &amp;lt;/PropertyGroup&amp;gt;
  &amp;lt;ItemGroup Condition=&amp;quot;&amp;#39;$(TargetFramework)&amp;#39; == &amp;#39;netstandard2.0&amp;#39;&amp;quot;&amp;gt;
    &amp;lt;PackageReference Include=&amp;quot;DevExpress.Xpo&amp;quot; Version=&amp;quot;19.2.3&amp;quot; /&amp;gt;
  &amp;lt;/ItemGroup&amp;gt;
  &amp;lt;ItemGroup Condition=&amp;quot;&amp;#39;$(TargetFramework)&amp;#39; == &amp;#39;netcoreapp3.0&amp;#39;&amp;quot;&amp;gt;
    &amp;lt;PackageReference Include=&amp;quot;DevExpress.WindowsDesktop.Xaf&amp;quot; Version=&amp;quot;19.2.3-ctp&amp;quot; /&amp;gt;
  &amp;lt;/ItemGroup&amp;gt;
&amp;lt;/Project&amp;gt;&lt;/pre&gt;

&lt;p&gt;The sample has the following structure and dependencies: &lt;/p&gt;
&lt;p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xpo/19.2/Multi-Targeting.png" style="width:452px;height:847px;" alt=""&gt;&lt;/p&gt;&lt;p&gt;For more information on .NET Core 3.0 and .NET Standard 2.0 support&amp;nbsp;in XPO, see &lt;a href="https://docs.devexpress.com/XPO/401269/fundamentals/net-core-3-0-and-net-standard-2-0-support?p=netstandard" target="_blank"&gt;this documentation topic&lt;/a&gt;.&lt;/p&gt;&lt;h2&gt;Your Feedback Matters&lt;/h2&gt;&lt;p&gt;Are you developing cross-platform libraries like this? If so, please share your thoughts and tell us other about the challenges you’ve encountered.&lt;/p&gt;&lt;p&gt;Are you experimenting with .NET Core 3? We’d love to know more about your experiences and whether you expect to port an existing WinForms and/or WPF app?&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>https://community.devexpress.com/Blogs/xpo/archive/2019/11/01/xpo-vistadb-6-postgresql-12-support-and-more-is-coming-v19-2.aspx</id>
    <title type="text">XPO - VistaDB 6, PostgreSQL 12 Support &amp; More (v19.2)</title>
    <published>2019-11-01T05:05:00Z</published>
    <updated>2026-06-09T00:53:03Z</updated>
    <author>
      <name>Dennis Garavsky (DevExpress)</name>
    </author>
    <link rel="alternate" href="https://community.devexpress.com/Blogs/xpo/archive/2019/11/01/xpo-vistadb-6-postgresql-12-support-and-more-is-coming-v19-2.aspx" />
    <category term=".NET Core" scheme="https://community.devexpress.com/Tags/.NET+Core" />
    <category term="database" scheme="https://community.devexpress.com/Tags/database" />
    <category term="orm" scheme="https://community.devexpress.com/Tags/orm" />
    <category term="postgre" scheme="https://community.devexpress.com/Tags/postgre" />
    <category term="VistaDB" scheme="https://community.devexpress.com/Tags/VistaDB" />
    <category term="XPO" scheme="https://community.devexpress.com/Tags/XPO" />
    <content type="html">&lt;p&gt;As you may already know, we &lt;a href="https://www.devexpress.com/Subscriptions/New-2019-2.xml#dataaccess" target="_blank"&gt;released v19.2&lt;/a&gt; last week.  In this post, I want to highlight a couple of small, but important additions to our &lt;a href="https://www.devexpress.com/products/net/orm/" target="_blank"&gt;ORM&lt;/a&gt;.&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;VistaDB 6 Support&lt;/h2&gt;
&lt;p&gt;XPO &lt;strong&gt;v19.2.3&lt;/strong&gt; supports the latest version of &lt;a href="https://vistadb.com/blog/vistadb-6-0-released/" target="_blank" style="color:#996bb4;"&gt;VistaDB 6&lt;/a&gt;&amp;nbsp;with VistaDb6ConnectionProvider. Related Support Tickets: &lt;a href="https://supportcenter.devexpress.com/ticket/details/t824999/xaf-full-text-search-and-vistadb-6" target="_blank"&gt;T824999&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="https://supportcenter.devexpress.com/Ticket/Details/T822805/correct-connection-string-for-vistadb-6" target="_blank"&gt;T822805&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="https://supportcenter.devexpress.com/ticket/details/t828597/using-dbupdater-with-vistadb6" target="_blank"&gt;T828597&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;PostgreSQL 12 Support&lt;/h2&gt;
&lt;p&gt;The &lt;a href="https://www.postgresql.org/about/news/1976/" target="_blank" style="color:#996bb4;"&gt;new version&lt;/a&gt; of this popular open-source database engine was also released this month. XPO will support PostgreSQL 12 in our next update (&lt;strong&gt;v19.2.4&lt;/strong&gt;). &lt;span&gt;Related Support Ticket&lt;/span&gt;:&amp;nbsp;&lt;a href="https://supportcenter.devexpress.com/ticket/details/t818996/column-d-adsrc-does-not-exist-postgresql-12" target="_blank"&gt;T818996&lt;/a&gt;.&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;Microsoft.Data.SqlClient&lt;/h2&gt;
&lt;p&gt;Microsoft recommends the new &lt;a href="https://techcommunity.microsoft.com/t5/SQL-Server/Released-General-Availability-of-Microsoft-Data-SqlClient-1-0/ba-p/825859" target="_blank"&gt;Microsoft.Data.SqlClient&lt;/a&gt; instead of System.Data.SqlClient for new projects. The new driver targets both .NET Framework and .NET Core apps. Going forward, support for new SQL Server features will only be implemented in Microsoft.Data.SqlClient.&lt;/p&gt;&lt;p&gt;We already researched this new driver and it seems that XPO will support it without problems. Expect more news from us in coming months.&lt;/p&gt;&lt;p&gt;Please let us know if you already tested the new driver with or without XPO on your own. Thanks.&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>https://community.devexpress.com/Blogs/xpo/archive/2019/10/30/xpo-updated-performance-benchmarks-for-net-core-3-0-v19-2.aspx</id>
    <title type="text">XPO - Updated Performance Benchmarks for .NET Core 3.0 (v19.2)</title>
    <published>2019-10-30T00:33:00Z</published>
    <updated>2026-06-09T00:53:03Z</updated>
    <author>
      <name>Dennis Garavsky (DevExpress)</name>
    </author>
    <link rel="alternate" href="https://community.devexpress.com/Blogs/xpo/archive/2019/10/30/xpo-updated-performance-benchmarks-for-net-core-3-0-v19-2.aspx" />
    <category term=".NET Core" scheme="https://community.devexpress.com/Tags/.NET+Core" />
    <category term=".net standard 2.0" scheme="https://community.devexpress.com/Tags/.net+standard+2.0" />
    <category term="comparison" scheme="https://community.devexpress.com/Tags/comparison" />
    <category term="EF" scheme="https://community.devexpress.com/Tags/EF" />
    <category term="Entity Framework" scheme="https://community.devexpress.com/Tags/Entity+Framework" />
    <category term="orm" scheme="https://community.devexpress.com/Tags/orm" />
    <category term="performance" scheme="https://community.devexpress.com/Tags/performance" />
    <category term="speed" scheme="https://community.devexpress.com/Tags/speed" />
    <category term="XPO" scheme="https://community.devexpress.com/Tags/XPO" />
    <content type="html">&lt;p&gt;The release of .NET Core 3 and &lt;a href="https://www.devexpress.com/products/net/orm/" target="_blank"&gt;XPO&lt;/a&gt; v19.2.3 gave us the opportunity to update benchmarks for XPO and Entity Framework. If you’re interested in learning more and executing the tests yourself, please point your browser to the following repository:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/DevExpress/XPO/tree/master/Benchmarks"&gt;https://github.com/DevExpress/XPO/tree/master/Benchmarks&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here’s a quick summary of our findings and things you ought to consider when comparing performance of XPO and Entity Framework:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;On large data sets,&amp;nbsp;XPO performs much better than other ORMs (in nearly all instances).&lt;/li&gt;
&lt;li&gt;On small data sets, XPO performs better in some tests (minor differences).&amp;nbsp;&lt;/li&gt;
&lt;li&gt;In all tests, XPO shows a linear relationship between execution time and record&amp;nbsp;count. EF6 and EF Core show non-linear relationship worse than O(n).&lt;/li&gt;
&lt;li&gt;In certain situations, good-old EF6 out performs EF Core 3.0 (especially when working with large amounts of data).&lt;/li&gt;
&lt;li&gt;XPO has potential for optimizations in object instantiation and high-latency network scenarios (EF Core is better in such cases).&amp;nbsp;XPO is better optimized for connections with low latency or those with good bandwidth (for instance, a local server).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;Sample of Our Results – InsertOne Method&amp;nbsp;&lt;/p&gt;
&lt;img src="https://community.devexpress.com:443/blogs/xpo/XPO_v19.2.3_vs_EF_Benchmark_InsertOne(1).png" alt="" style="width:713px;height:602px;"&gt;
&lt;h2&gt;Your Feedback Matters&lt;/h2&gt;
&lt;p&gt;As always, we welcome your feedback. If you had the opportunity to execute our benchmark tests, please share your thoughts below.&lt;/p&gt;
&lt;p&gt;We’d love to know whether our findings are in-line with yours.&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>https://community.devexpress.com/Blogs/xpo/archive/2019/08/19/express-persistent-objects-early-access-preview-v19-2.aspx</id>
    <title type="text">eXpress Persistent Objects - Early Access Preview (v19.2)</title>
    <published>2019-08-19T13:00:00Z</published>
    <updated>2026-06-09T00:53:03Z</updated>
    <author>
      <name>Dennis Garavsky (DevExpress)</name>
    </author>
    <link rel="alternate" href="https://community.devexpress.com/Blogs/xpo/archive/2019/08/19/express-persistent-objects-early-access-preview-v19-2.aspx" />
    <category term=".NET Core" scheme="https://community.devexpress.com/Tags/.NET+Core" />
    <category term="LINQ" scheme="https://community.devexpress.com/Tags/LINQ" />
    <category term="ORM Data Model Wizard" scheme="https://community.devexpress.com/Tags/ORM+Data+Model+Wizard" />
    <category term="prerelease" scheme="https://community.devexpress.com/Tags/prerelease" />
    <category term="roadmap" scheme="https://community.devexpress.com/Tags/roadmap" />
    <category term="testing" scheme="https://community.devexpress.com/Tags/testing" />
    <category term="v19.2" scheme="https://community.devexpress.com/Tags/v19.2" />
    <category term="XPO" scheme="https://community.devexpress.com/Tags/XPO" />
    <content type="html">&lt;p&gt;As you probably know by now, we expect to release v19.2 within the next few months.  The goal of this blog post is to share our newest XPO-specific features and give you the opportunity to test new functionality before we wrap up our current dev cycle.  &lt;/p&gt;&lt;p&gt;&lt;span&gt;XPO&amp;nbsp;is available &lt;a href="https://community.devexpress.com/blogs/xpo/archive/2018/05/21/xpo-free-of-charge-in-v18-1.aspx" target="_blank"&gt;free-of-charge&lt;/a&gt;.&amp;nbsp;&lt;/span&gt;If you own an active&amp;nbsp;&lt;a href="https://www.devexpress.com/buy/net/"&gt;Universal or DXperience&lt;/a&gt;&amp;nbsp;subscription, you can download the preview build from the DevExpress&amp;nbsp;&lt;a href="https://www.devexpress.com/ClientCenter/DownloadManager/"&gt;Download Manager&lt;/a&gt;&amp;nbsp;and test the features described in this blog post. Once you do, please take a moment tell us whether these new features address your business needs. This will help us fine-tune our code before official launch.&lt;/p&gt;



&lt;h2&gt;.NET Core 3.0 Desktop SDK Support for WinForms and WPF Apps&lt;/h2&gt;&lt;p&gt;&lt;a href="https://www.devexpress.com/products/net/orm/" target="_blank"&gt;XPO&lt;/a&gt; for .NET Core 3.0 WinForms and WPF apps can be added using the &lt;em&gt;DevExpress.WindowsDesktop.*&lt;/em&gt; packages from our NuGet feed. For more information, please &lt;strong&gt;&lt;a href="https://community.devexpress.com/blogs/xpo/archive/2019/07/30/xpo-net-core-3-0-support-in-winforms-and-wpf-apps-with-microsoft-net-sdk-windowsdesktop.aspx" target="_blank" style="background-color:#ffff99;"&gt;read this&amp;nbsp;recent blog post&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Known Issue in EAP v19.2&lt;/strong&gt;:&amp;nbsp;&lt;a href="https://www.devexpress.com/Support/Center/Question/Details/T808835/net-core-3-0-desktop-xpinstantfeedbackview-is-missing-in-the-assembly" target="_blank"&gt;.NET Core 3.0 Desktop - XPInstantFeedbackView is missing in the assembly&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;ORM Data Model Designer &amp;amp; LINQ Enhancements&lt;/h2&gt;&lt;p&gt;Our designer can now store connection strings in appsettings.json, generate JSON serialization and Dependency Injection extensions (all of which are very important for .NET Core projects).  We also gave the designer a slight face-lift, added more meaningful error messages/text, and introduced support for SelectMany and WithDeleted methods in XPQuery. For more information, please  &lt;strong&gt;&lt;span style="background-color:#ffff99;"&gt;&lt;a href="https://community.devexpress.com/blogs/xpo/archive/2019/07/26/xpo-orm-data-model-designer-linq-enhancements-updates-on-new-data-sources.aspx" target="_blank"&gt;read this recent blog post&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;.&lt;/p&gt;&lt;h2&gt;Custom Aggregates for Collections of Persistent Objects&lt;/h2&gt;&lt;p&gt;In addition to predefined &lt;a href="https://docs.devexpress.com/CoreLibraries/DevExpress.Data.Filtering.Aggregate" target="_blank"&gt;aggregates&lt;/a&gt;&amp;nbsp;(Sum, Count, Min, Max, Avg, Single, Exists), XPO users can now implement custom aggregates. You can use them to query data with XPQuery and with data sources that support CriteriaOperator (including server mode collections).&lt;/p&gt;&lt;pre class="brush: csharp"&gt;// Criteria string for a custom aggregate with a detail collection property or Free Joins.
&amp;quot;YourCollection.YourCustomAggregate(YourNestedProperty)&amp;quot;

// Specific criteria string examples for the Orders collection and the CountDistinct and STDEVP custom aggregates.
&amp;quot;[Orders][].CountDistinct([ProductName])&amp;quot;, &amp;quot;[Orders][].STDEVP([Price])&amp;quot;

// Criteria string for a custom aggregate with a top-level collection of persistent objects.
&amp;quot;[].CUSTOM_AGGREGATE(&amp;#39;YourCustomAggregate&amp;#39;, YourNestedProperty)&amp;quot;

// LINQ to XPO usage of custom aggregates (CountDistinct and STDEVP) with a detail collection property.
new XPQuery&amp;lt;Customer&amp;gt;(theSession)
    .Select(t =&amp;gt; new {
        ContactName = t.ContactName,
        CountDistinct = CountDistinctCustomAggregate.CountDistinct(
            t.Orders, o =&amp;gt; o.ProductName
        ),
        QuantityVariance = STDEVPCustomAggregate.STDEVP(
            t.Orders, o =&amp;gt; o.Quantity
        ),
        PriceVariance = STDEVPCustomAggregate.STDEVP(
            t.Orders, o =&amp;gt; o.Price
        ),
     }).OrderBy(t =&amp;gt; t.ContactName).ToList();
&lt;/pre&gt;&lt;p&gt;&lt;span&gt;To create a custom aggregate, implement the following interfaces: &lt;em&gt;ICustomAggregate, ICustomAggregateQueryable, ICustomAggregateFormattable&lt;/em&gt;. To register a custom aggregate, use the&amp;nbsp;&lt;em&gt;CriteriaOperator.RegisterCustomAggregate&lt;/em&gt; method - method - nearly the same process as that used when creating a custom criteria function.&amp;nbsp;&lt;/span&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;For more information, please&amp;nbsp;&lt;strong&gt;&lt;a href="https://github.com/DevExpress-Examples/XPO_how-to-implement-custom-aggregates" target="_blank" style="background-color:#ffff99;"&gt;refer to&amp;nbsp;this&amp;nbsp;WinForms sample on GitHub&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;and online documentation at&amp;nbsp;&lt;a href="https://docs.devexpress.com/XPO/401333/concepts/custom-aggregate-functions" target="_blank"&gt;Custom Aggregate Functions&lt;/a&gt;.&lt;/p&gt;

&lt;div class="Highlight"&gt;&lt;span&gt;Using NuGet? Our unified .NET installer automatically configures the&amp;nbsp;&lt;a href="https://docs.devexpress.com/GeneralInformation/401140/Installation/Install-DevExpress-Controls-Using-NuGet-Packages/Local-NuGet-feed" target="_blank" style="color:#996bb4;"&gt;Local NuGet feed&lt;/a&gt;&amp;nbsp;for you.&lt;/span&gt;&lt;/div&gt;

&lt;h2&gt;XPO Data Source for DevExpress Dashboard&lt;/h2&gt;&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;We created the&amp;nbsp;&lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.DashboardXpoDataSource?v=19.2" target="_blank"&gt;DevExpress.DashboardCommon.DashboardXpoDataSource&lt;/a&gt; component to help XPO users bind their persistent class data to DevExpress Dashboard (DevExpress Dashboard&amp;nbsp;is part of the&amp;nbsp;&lt;a href="https://www.devexpress.com/buy/net/" style="color:#996bb4;"&gt;Universal&lt;/a&gt;&amp;nbsp;Subscription).&amp;nbsp;&amp;nbsp;&lt;/span&gt;You can configure the new component in code or use the built-in dashboard designer.&lt;/p&gt;&lt;div&gt;For more information, please&amp;nbsp;&lt;span style="background-color:#ffffff;"&gt;refer to these&amp;nbsp;WinForms samples on GitHub:&amp;nbsp;&lt;/span&gt;&lt;strong style="background-color:#ffff99;"&gt;&lt;a href="https://github.com/DevExpress-Examples/winforms-dashboard-xpo-data-source/" target="_blank"&gt;Runtime&lt;/a&gt;, &lt;a href="https://github.com/DevExpress-Examples/winforms-dashboard-connect-to-database-with-xpo" target="_blank"&gt;Design-Time&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;h2&gt;Your Feedback Matters!&lt;/h2&gt;&lt;div&gt;Your thoughts and perspectives are always appreciated. Please use the comments section below, &lt;a href="https://www.devexpress.com/ask" target="_blank"&gt;create a new Support Center&lt;/a&gt; ticket or email &lt;a href="mailto:xpoteam@devexpress.com?subject=Feedback%20on%20XPO%20v19.2"&gt;xpoteam@devexpress.com&lt;/a&gt; to engage us.  &lt;/div&gt;&lt;div&gt;We know you’re busy, but we ask that you take a moment out of your schedule to answer the survey questions below.  Thanks in advance for your participation.&lt;/div&gt;&lt;div data-survey-id="00557359-f7c4-4ac0-9b2a-371034adf645" data-survey-auth-required="true"&gt;&lt;/div&gt;

&lt;div class="Note"&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Early Access and CTP builds are provided solely for early testing purposes and are not ready for production use. This build can be installed side by side with other major versions of DevExpress products. Please backup your project and other important data before installing Early Access and CTP builds.&lt;/div&gt;&lt;p&gt; &lt;/p&gt;</content>
  </entry>
</feed>