XPO - MySQL 8.0, PostgreSQL 11, IMB DB2 for .NET Core Support and More (v18.2)

XPO Team Blog
04 December 2018

Thanks to great user feedback, we had a successful release with several major new features. In this post, I will highlight a number of smaller, but useful additions to our ORM and its associated learning materials.

MySQL 8.0, PostgreSQL 11 and IBM DB2 for .NET Core Support

XPO v18.2.3 supports MySQL 8.0 and PostgreSQL 11 database engines. In several weeks, XPO v18.2.4 will also support the IBM DB2 provider for .NET Core / .NET Standard 2.0.

Custom GUID Generation

Requested by several users who experienced better INSERT performance on large databases with CombGuid (T607385). You can now provide a custom Guid primary key generation algorithm globally as described in this example.

XPObjectSource Tutorials & API Reference

As you may remember from our previous post, XPObjectSource is a new first-class citizen in DevExpress Reporting and is used to reduce the amount of code needed to bind reports using XPO data. To learn more about this new capability, refer to the following documents: Tutorials | API Reference.

And, please take our one-minute survey and share your opinion about XPObjectSource and other new reporting data source types.

WCF Data Services 5.7 support

The DevExpress.Xpo.Extensions library that provides XPO data service for OData V3 now supports WCF Data Services 5.7. You no longer need assembly binding redirections to target the latest version of a Microsoft package.

If you missed our previous post, there is now a better way to create interoperable data services - with XPO, Web API and OData v4.

Async/Await Methods Documentation

The async/await language feature is a de-facto standard and its concepts are well described in the Microsoft .NET Guide: Asynchronous Programming Patterns | Task-based Asynchronous Pattern.

Question 1: Do you require any additional concepts in XPO documentation besides a formal API Reference like SessionXPQueryExtensions? Are our existing examples, blog posts, online and offline demos and KB sufficient?

Where are simplified SetPropertyValue, GetCollection and other APIs?

As you may recall from our previous posts (one, two), we hoped to simplify SetPropertyValue, GetPropertyValueGetList, and GetCollection methods and avoid passing a property name as a string parameter. Very promising .NET's Caller Information feature did not help us due to a VB.NET limitation (broken overloaded method compilation with the ref keyword).

Instead, we thought about updating our demos and documentation to use the nameof keyword. We consider this important for new and existing clients who might derive implementation ideas from our learning materials and experience problems later (for instance, property renaming is more difficult with hardcoded strings).

Question 2: Do you feel its important that we update our learning materials or do you not see any issues and nameof with or without CodeRush templates is already sufficient?

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

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.
7 comment(s)

great job! Thanks for BD2 provider to core

5 December 2018

I wanted to say thanks for the XPObjectSource. Finally a solution that works without any hassel. I could remove a lot of clutter from my code.

5 December 2018
Marc Greiner (DevExpress MVP)
Marc Greiner (DevExpress MVP)

Thank you for your question about "nameof".

I have always wondered why you don't use nameof or advertise it in your examples and tutorials.

We have been using it in SetPropertyValue and GetCollection methods lately, because of the refactoring benefits.

We only do this on new classes and classes that go through many changes.

And guess what? We happen to find misspelled property names in old classes...

5 December 2018
Martin Brekhof 2
Martin Brekhof

I like the CombGUID, by the way: did you mean Postgresql 11 where you mentioned 10?

5 December 2018
Uriah (DevExpress Support)
Uriah (DevExpress Support)

@Debeściak: You're always welcome!

@DIP_Michel: Our team is happy to hear that!

@Marc Greiner: The main reason is the supported C# and Visual Studio version. Even with community.devexpress.com/.../devexpress-universal-visual-studio-net-and-c-support-going-forward.aspx, we cannot easily use C# 6 features in all our demos as they must be compilable under Visual Studio 2012 and C# 5. We still plan to make an exception for XAF/XPO demos here since this constraint is less actual now.

@Martin Brekhof 2: Thanks! Yes, we have PostgreSQL 11 tests and officially support this version starting from 18.2.

6 December 2018
Joseph Kellerer 2
Joseph Kellerer 2

Concerning the last question:

I think nameof is completely sufficient.

11 December 2018
Dennis (DevExpress)
Dennis (DevExpress)

@Joseph Kellerer: Thank you! It all looks like we will not perform this large learning material update based on the low user interest in this regard.

We will just recommend our users use 'nameof' to declare persistent properties and will follow this approach ourselves for all new learning materials.

11 December 2018

Please login or register to post comments.