The Data Collector feature in our Solution Family product line is one of the oldest (if not the oldest) sections of code, and as such it’s in need of a refactor to improve how it works. We’ve updated just about everything else that uses data storage to use the OpenNETCF ORM framework, but Data Collectors have languished, largely because they are complex. The Data Collector lets a user create an ad-hoc data collection definition that translates into a SQL Compact Table at run time. The problem with migrating to ORM is that the ORM requires compile-time definitions of all Entities. At least that was the problem until today.
I just checked in a new change set that supports the concept of a DynamicEntity (along with all of the old goodness that is ORM). Now you can create and register a DynamicEntityDefinition with your IDataStore at run time and it will generate a table for you in the back end. New overloads for all of the typical CRUD commands (Select, Update, Insert, Delete) allow you to just ask for the DynamicEntity by name and it returns an array of DynamicEntity instances that hold the field names and data values.
It’s in a “beta” state right now, but there’s a test method in the change set that shows general usage of all CRUD operations. Give it a spin, and if you find any bad behavior, report it on Codeplex.