eXpress Persistent Objects - Early Access Preview (v20.1)

XPO Team Blog
06 March 2020

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. XPO is available free-of-charge. If you own an active Universal or DXperience subscription, you can download the preview build from the DevExpress Download Manager 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.

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.

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.

Protect Sensitive Data - Using SQL Server and Always Encrypted 

XPO v20.1 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).  

If you are not yet familiar with this SQL Server feature, let me quote the official documentation: 

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).
If you are new to Always Encrypted, you may also want to watch a 15-min feature overview from Jose Ojeda, a DevExpress MVP:

Please Help Us Test Major Changes to the XPO Core against All DB Providers 

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. If you happen to encounter breaking changes or unique scenarios, please contact us in the Support Center. Thank you in advance.

XPO Officially Supports Microsoft.Data.SqlClient

Microsoft recommends the new Microsoft.Data.SqlClient 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 in Microsoft.Data.SqlClient. 

We tested XPO with this new driver, updated the Database Systems Supported by XPO article and some public APIs. For instance, the CreateSqlDependencyCacheRoot methods now accept an IDbConnection object as a parameter.

Breaking Changes

Please refer to the following article: The DevExpress.Data, DevExpress.Xpo and other cross-platform assemblies for .NET Core 3 (WinForms & WPF), .NET Standard, .NET Framework apps have been split or removed. While these changes will not affect the majority of XPO users, they help simplify common development tasks like How to Share Class Libraries with the DevExpress Data or XPO Dependencies for Different Target Frameworks.

Coming Soon: Database Schema Migrations

Our final v20.1 release (in 1-2 months) will also allow users to incrementally update database schema and preserve existing data after changes are made to XPO’s data model (AS4684). Our goal is to make this process better than that found in EF Core Migrations. For starters, we will generate diffs between the latest data model and existing database schema so that you can apply the SQL script manually. For v20.2, we are considering to update schema automatically via a special command in the ORM Data Model Designer or some CLI. If you have any questions or suggestions about implementation, feel free to email us at XpoTeam@devexpress.com - we will be happy to follow up.

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. 

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.

Showcase Your Apps on DevExpress.com

Highlight your business app and share your development experiences with the DevExpress community. To include your app in our upcoming App Showcase, please forward an application screenshot to clientservices@devexpress.com and tell us which DevExpress products you currently use within your organization.
5 comment(s)
renejdm
renejdm
I am using XPO in a Model/Database First approach. Will database schema migrations work with this scenario?
8 March 2020
Dennis (DevExpress)
Dennis (DevExpress)
@renejdm: Yes.
9 March 2020
Fredi Jaramillo 1
Fredi Jaramillo 1
I just updated my application to the new pre-release version "DevExpress.WindowsDesktop.XPO 20.1.2-pre-20064" and I'm seeing the following issues:

1.- When saving a new record to a table that contains a DateTime property the data gets saved as a double. This is my code:

var newTestTable new TestTable (unitOfWork)
{
Author = p_groups.AuthorName,
Name = p_policyFileName,
CreationDate = DateTime.Now,
};
unitOfWork.CommitChanges();

The "CreationDate" property shows this:
"2458918.07109214" instead of the current date time
The property "CreationDate" is the type DateTime on my data model

2.- When saving a property with a string which length exceeds the property length defined on the data model, the application is showing an error complaining about the property length. I did not get those errors when using the version "DevExpress.WindowsDesktop.Wpf 19.2.6"

Note: I'm using Sqlite and .Net core 3.1


Thanks.


9 March 2020
Uriah (DevExpress Support)
Uriah (DevExpress Support)
10 March 2020
Peter Metz
Peter Metz

Hello Uriah,

as suggested in the blog from Oliver Sturm in the year 2017 - are there any real plans to support 
MS SQL data type 

    DateTimeOffset 

https://community.devexpress.com/blogs/oliver/archive/2017/01/23/persisting-datetimeoffset-with-xpo.aspx

?

Thank you, Best Regards, Peter

12 March 2020

Please login or register to post comments.