Well it's been 6 months since I first announced the Umbraco Interaction Layer project, but I'm happy to announce that v1.0 is available on the CodePlex site for download!
*Pauses for dramatic effect*
The v1 release supports Umbraco 4.0.0 and Umbraco 3.0.x.
The following are the major changes between the UIL RC and v1.0 release:
- Fixed the DataContractAttribute so it is now included on all generated classes (I didn't realise it wasn't inherited!)
- Pluralised names of the generated LINQ interfaces are now more likely to be correct English
- DocTypeBase has a Published property on it so it's easier to check the state of a document
Speaking of having v4 support one thing I wasn't initally aware of with v4 was the nested DocType feature. I'm happy to announce that this is supported in the UIL release (for v4). It's not quite as nice as I'd like (it doesn't use class inheritance), the properties from a parent DocType are just included on the child.
There are some known limitations which are:
- Generated properties are using the underlying database type, which does mean that DataTypes such as Content Picker and Media Picker will generate an int property not a URL, string or custom-class property
- The underlying Umbraco interface is provided by umbraco.cms.businesslogic.web.Document. This means that the access is directly with the Umbraco database not the umbraco.config xml files. I strongly recomment that when you are getting an existing object that you load via the Version GUID of the umbraco.presentation.nodeFactory.Node object. This will ensure you are loading the current published verion. When loading from the integer ID you will load the last saved version
- When generating a class which a child relationship you need to include the child DocType to ensure that the LINQ interface is generated. The generation engine is unable to generate a child relationship of it isn't also generating the class for the child at the same time. This problem is also compounded by the fact there isn't any way to view the child relationships from the dashboard UI for generating classes
I really would love to hear from anyone who does have a play with the UIL, good and bad feedback.
I'm going to be looking at the v-next version soon so I will be looking for feedback of areas to improve or implement.
And one last thing, get LINQ-ing with Umbraco!