eXpress Persistent Objects 2019 Roadmap - Your Vote Counts

XPO Team Blog
18 December 2018

As we make our plans for 2019 we would love to get your feedback, help us determine the features you would like to see for the DevExpress eXpress Persistent Objects (XPO) ORM library.

EDIT: Here is our final roadmap: eXpress Persistent Objects – 2019 Roadmap.

Housekeeping

There are a number of housekeeping tasks that need to be carried out during every release cycle. The following outlines what we have planned for 2019.

  • Enhance our async/await method support and apply it to the underlying ADO.NET drivers where applicable (not all drivers provide async methods). Currently, asynchronous execution is implemented at the XPO layer and XPO connection providers use synchronous versions of IDbConnection, IDbCommand, IDataReader, and other ADO.NET APIs.
  • Support .NET Core 3.0 and .NET Standard 2.1 specification when they are officially released.
  • Test and expand .NET Core connection providers support as and when RDBMS vendors provide it.
  • Add support for Visual Studio 2019. We have identified updating and testing our extensions for Item and Project Templates (ORM Data Model Designer, Persistent Object, OData Service). There is currently some work scheduled for the minor update of v18.2.4, other tasks such as support for AsyncPackage will be completed with the official release of Visual Studio 2019.
  • Keep XPO connection providers up to date with the latest database engine versions and extend their support according to user feedback. This is a repetitive task that sees enhancements being made numerous times each release for example in 2018: one, two, three, four.
  • Introduce more demos and enhance the learning materials for the main platforms where XPO is used (WinForms, ASP.NET Core, ASP.NET WebForms, WPF, Xamarin).

These items along with fixing bugs and support will keep our team busy for approximately 5 months.

Your Vote Counts!

In addition to the above housekeeping we will focus on introducing some important features based on user feedback. The following list represents the most important items we have identified.

Feature Group #1

1.1. XPServerModeDataView and XPInstantFeedbackDataView are mixtures of XPServerCollectionSource/XPInstantFeedbackSource and XPView for use with our grids. These are new read-only server mode components offering:

  • Handle large data sources with less memory (no entire persistent object instance load);
  • Customize SELECT statements to exclude unused data columns;
  • Include reference property data in the root query to avoid the 1+N problem;
  • Include custom (virtual) properties calculated on the server side (similar to ViewProperty).

1.2. XPBindingSource is a lightweight data source for WinForms and WPF (runtime only) applications. This enhances usability in the following scenarios:

  • XPO data sources on visually inherited Windows forms and user controls (T121952);
  • Easy persistent object and collection reload (A643);
  • Immediate data-bound control refresh (T685021);
  • Binding to nullable properties (S33566) and object references without complex or full custom property descriptors (T319505).

Feature Group #2

2.1. First class support for custom database column types beyond the default set. Initially, users will still need to create custom connection providers, but generic APIs will make this extension much easier. Once the new infrastructure is established, we will consider built-in support for Microsoft SQL Server datetimeoffset, datetime2, spatial and other popular database types.

2.2. Various ORM Data Model Designer enhancements:

  • Detect use in XAF projects and automatically enable DevExpress.Persistent.BaseImpl.BaseObject in the base class selector (T686856);
  • Optionally generate XAF RuleRequiredField, RuleValueComparison or RuleCriteria validation attributes based on NOT NULL and size of underlying database columns (S172157);
  • Remove ambiguity between the connection string users specify in the XPO designer, its ConnectionHelper class and XAF data store settings (T686307);
  • Generate plain XPO data model code without the visual designer (ORMDataModel.xpo). We are thinking of a new wizard option or even some CLI for this.
  • Handle the "Could not load type Npgsql.NpgsqlConnection" and similar errors due to improperly installed database providers better.

Feature Group #3

XPO Migrations: a simpler process to incrementally update the database schema and preserve existing data after XPO data model changes (AS4684). Currently 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's ModuleUpdater ships with the DropColumn, RenameTable, DropConstraint and other APIs for Microsoft SQL Server for that purpose. Our goal is to make this process easier and more efficient than that of our main competitor (EF Core Migrations).

If you vote for this feature, please tell us your requirements:

A) update schema automatically via a special command in the ORM Data Model Designer or some CLI;
or
B) generate diffs between the latest data model and existing database schema so that you can apply the SQL script manually.

Please note, this feature may be optimistic due to the size of the work required and the fact that we support more than 14 database engines.

Your Feedback Is Needed!

The above features have been intentionally grouped into three choices, each estimated approximately 5 months to research, implement, test and document.

As always we welcome your comments and specific usage-scenarios, the more you share, the better we can understand your business needs now and into the future.

Love XPO and want to help us promote it? Add the package through Nuget.org instead of DevExpress Nuget!

Free DevExpress Products - Get Your Copy Today

The following free DevExpress product offers remain available. Should you have any questions about the free offers below, please submit a ticket via the DevExpress Support Center at your convenience. We'll be happy to follow-up.
No Comments

Please login or register to post comments.