Simply put, CustomPropertyDbEx takes the custom properties you can create and assign to channels, templates, and postings and moves from from the CMS environment out to a database while maintaining a close link between the CMS asset and the custom properties.
There are downsides with the current CustomProperty implementation in the CMS PAPI, such as:
- Every CMS developer knows (or should know) that you should never use the searching methods for CustomProperties in the CMS PAPI as they have a huge performance hit associated with them.
- You can not create CustomProperties on the fly for channels… you can only create them in Site Manager.
- CustomProperties are limited to name-value text pairs; you can’t save objects or lists without some sort of a work-around.
That’s just a few of them. What I’ve done is build a tiny database schema consisting of a table and a handful of stored procedures and a lightweight assembly to manage the logic of maintaining and accessing CustomProperties in a database. The naming conventions and schema are fairly similar to the CMS PAPI naming conventions.
I’ve written an article explaining the CustomPropertyDbEx as well as some code examples, sample applications, and help files… you can read about it here. Or you can just download the solution below which includes the database DDL scripts, sample console project, and the CustomPropertyDbEx assembly. They were in source control, so you’ll get some errors when opening the solution. Just click though them.